我无法让KeyEvent监听器工作

时间:2010-10-06 14:19:59

标签: java keylistener keyevent

好的,先关闭。 如果我做System.out.println(e); 当我按下键时会打印出来。但是我不能为我的生活弄清楚如何将它存储到int中。如果我这样做,我的IDE没有错误 int pressed = e.KEY_PRESSED();或int pressed = e.getKeyCode(); 但如果我尝试打印就没有任何反应。

我一直试图让它工作几个小时,Googling KeyEvent处理程序和Javadocs似乎对我没什么帮助。

public void keyPressed(KeyEvent e) {
    pressed = e.getKeyCode();
    System.out.println(pressed);

}

    do{
        time = System.currentTimeMillis();
        do{
            if(pressed == 37||pressed==38||pressed==39||pressed==40){
                lastvalid=pressed;
            }
        }
        while(System.currentTimeMillis() < time + speed);

        switch(lastvalid){
            case 37: catarloc.set(0, (Integer)catarloc.get(0)-1); break;
            case 38: catarloc.set(1, (Integer)catarloc.get(1)-1); break;
            case 39: catarloc.set(0, (Integer)catarloc.get(0)+1); break;
            case 40: catarloc.set(1, (Integer)catarloc.get(1)+1); break;
        }

        if(Math.random() > .95 || apples < 1){
            applearray[(int)(Math.random()*100/2.8)][(int)(Math.random()*100/4)] = true;
            apples++;
        }
        score+=catarloc.size()-1;
        label.setText("Score     "+ score);
        mainWindow.repaint();
    }
    while(win == false || lose == false);

2 个答案:

答案 0 :(得分:1)

keyEvent.getKeyCode()怎么样?它返回一个int。 KEY_PRESSED是KeyEvent上的静态最终int成员,表示按下键时的事件,而不是实际的键代码。

更新:(哎呀)我看到你已经尝试过getKeyCode。如果您打印getKeyLocationgetKeyChar会怎样?

答案 1 :(得分:1)

取决于活动类型:

  • keyEvent.getKeyChar()为您提供与该键相关联的字符,但仅适用于KEY_TYPED个事件。否则返回CHAR_UNDEFINED
  • keyEvent.getKeyCode()为您提供虚拟密钥代码,但仅适用于KEY_PRESSEDKEY_RELEASED个事件。否则返回VK_UNDEFINED