Я не могу заставить слушателя KeyEvent работать - PullRequest
2 голосов
/ 06 октября 2010

Хорошо, сначала. Если я сделаю System.out.println (e); это печатает, когда я нажимаю клавишу. Однако я не могу на всю жизнь понять, как сохранить это в Int. Моя IDE не дает мне ошибок, если я делаю int selected = e.KEY_PRESSED (); или intressed = 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 ]

1 голос
/ 06 октября 2010

В зависимости от типа события:

  • keyEvent.getKeyChar() дает вам символ, связанный с клавишей, но только для KEY_TYPED событий. В противном случае возвращается CHAR_UNDEFINED
  • keyEvent.getKeyCode() дает код виртуальной клавиши, но только для событий KEY_PRESSED и KEY_RELEASED. В противном случае возвращается VK_UNDEFINED.
1 голос
/ 06 октября 2010

А как насчет keyEvent.getKeyCode()?Возвращает int.KEY_PRESSED является статическим финальным int-членом KeyEvent и представляет собой событие, когда нажата клавиша, а не фактический код клавиши.

Обновление: (Ой) Я вижу, что вы уже пробовали getKeyCode.Что произойдет, если вы напечатаете getKeyLocation или getKeyChar?

...