【问题标题】:The type of the expression must be an array type but it resolved to ArrayList<Integer> -KeyEvent表达式的类型必须是数组类型,但它解析为 ArrayList<Integer> -KeyEvent
【发布时间】:2016-05-31 18:31:19
【问题描述】:

我编写了将首先“记录”的代码(将一些关键事件添加到数组列表中)。就像我按 A C D A 一样,按每个程序后都会按此键。我尝试通过arraylist来做,但它不起作用,任何人都可以帮助我吗? 我也有“机器人无法解决”。

private ArrayList<Integer> keys;
public void keyPressed(KeyEvent e) {

    if (e.getKeyCode() == KeyEvent.VK_A) {
        keys.add(KeyEvent.VK_A);
    }
    if (e.getKeyCode() == KeyEvent.VK_B) {
        keys.add(KeyEvent.VK_B);
    }
    if (e.getKeyCode() == KeyEvent.VK_C) {
        keys.add(KeyEvent.VK_C);
    }
    if (e.getKeyCode() == KeyEvent.VK_D) {
        keys.add(KeyEvent.VK_D);
    } 

    for (int x : keys) {
        robot.keyPress(keys);
    }

}

【问题讨论】:

  • 关于“它无法正常工作” - 你能说得更具体些吗?你在观察什么?你想发生什么?
  • @AndyThomas 当然,对不起,我删除了重要的行,现在它是正确的。在循环中我有错误。
  • “我有错误”含糊不清。你期待什么,你观察到什么?
  • 代码sn-p中没有定义变量robot。根据错误消息,它也没有在其他任何地方定义。
  • 你在哪里声明了robotrobot是什么类型?你实例化了keys吗?

标签: java arraylist awtrobot


【解决方案1】:

我认为您的代码中缺少几行。 您永远不会实例化密钥或机器人。

但是,从您的评论看来,问题出在循环中。 您正在调用robot.keyPress(keys);,其中键是键列表,但是由于您正在循环,我猜您希望机器人在循环的每次迭代中按下一个键,所以它可能应该是robot.keyPress(x);

但是如果没有关于您的代码的更多信息,或者很难说错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2012-04-20
    相关资源
    最近更新 更多