2

好的,首先。如果我做 System.out.println(e); 当我按下键时会打印出来。但是,我一生都无法弄清楚如何将其存储到 int 中。如果我执行 int press = e.KEY_PRESSED(); ,我的 IDE 不会给我任何错误 或 int 按下 = e.getKeyCode(); 但是如果我尝试打印,什么也不会发生。

我一直试图让它工作几个小时,谷歌搜索 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);
4

2 回答 2

1

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

更新:(哎呀)我看到你已经尝试过 getKeyCode。如果你打印getKeyLocationor会发生什么getKeyChar

于 2010-10-06T14:28:04.983 回答
1

根据事件类型:

  • keyEvent.getKeyChar()为您提供与键关联的字符,但仅适用于KEY_TYPED事件。否则返回CHAR_UNDEFINED
  • keyEvent.getKeyCode()为您提供虚拟键代码,但仅限于KEY_PRESSEDKEY_RELEASED事件。否则返回VK_UNDEFINED
于 2010-10-06T14:35:56.693 回答