2016-11-26 5 views
0

Я работаю над ключом паузы в своем маленьком школьном проекте, но по какой-то причине отказывается работать. С использованием этого кода:KeyEvent.getKeyCode() всегда возвращает ноль

 public void keyTyped(KeyEvent me) { //ESCAPE PLS WORK ... 
     code = me.getKeyCode(); 
     System.out.println(code); 
} 

По какой-то причине «код» всегда остается нулевым. Я попытался поместить его в разные пустоты (нажал/отпустил и т. Д.), Но он все равно не работает. Что может быть причиной?

+3

Является ли это «KeyListener» прикрепленным к какому-то «кадру»? Можете ли вы предоставить [Минимальный, полный, проверенный пример] (http://stackoverflow.com/help/mcve), который обнаруживает проблему? – qxz

+0

Я добавляю слушателя клавиш в рамку, да. Я добавляю его this.addKeyListener (это); –

+2

Кроме того, вы не должны вызывать методы _voids_. Если что-нибудь, скажите _'void' methods_ – qxz

ответ

0

Почему бы не попробовать метод keyPressed() снова, как в примере ниже:

public void keyPressed(KeyEvent e) { 
    int code = e.getKeyCode(); 
    switch(code) { 
     case KeyEvent.VK_UP: 
      // handle up 
      System.out.println(code); 
      break; 
     case KeyEvent.VK_DOWN: 
      // handle down 
      break; 
     case KeyEvent.VK_LEFT: 
      // handle left 
      break; 
     case KeyEvent.VK_RIGHT : 
      // handle right 
      break; 
    } 
} 

Обратите внимание, что вы должны ожидать целое.

3

Вот что говорит о javadocgetKeyCode()

Возвращает: целочисленный код для фактических клавиш на клавиатуре. (Для KEY_TYPED событий, KEYCODE является VK_UNDEFINED.)

И значение VK_UNDEFINED равно нулю.

javadoc также говорит:

public static final int KEY_TYPED 

"ключ напечатал" событие. Это событие генерируется при вводе символа. В простейшем случае он создается одним нажатием клавиши. Часто, однако, символы создаются с помощью серии нажатий клавиш, а отображение от нажатых клавиш до ключевых типизированных событий может быть много-к-одному или многим-ко-многим.

Возможно, вы смотрите на неправильные ключевые события. Может быть, нужно смотреть на события KEY_PRESSED или KEY_RELEASED, а не на события KEY_TYPED.

+1

Возможно, вы должны включить ссылку – qxz

+0

Я сделал это. –

Смежные вопросы