Как проверить, была ли клавиша нажата клавишей со стрелкой в Java KeyListener?
Можете ли вы помочь мне реорганизовать этот код:
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode()==39)
{
//Right arrow key code
}
else if (e.getKeyCode()==37)
{
//Left arrow key code
}
repaint();
}
Укажите, как проверить клавиши со стрелками вверх и вниз. Спасибо!
Ответы
Ответ 1
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch( keyCode ) {
case KeyEvent.VK_UP:
// handle up
break;
case KeyEvent.VK_DOWN:
// handle down
break;
case KeyEvent.VK_LEFT:
// handle left
break;
case KeyEvent.VK_RIGHT :
// handle right
break;
}
}
Ответ 2
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT ) {
//Right arrow key code
} else if (e.getKeyCode() == KeyEvent.VK_LEFT ) {
//Left arrow key code
} else if (e.getKeyCode() == KeyEvent.VK_UP ) {
//Up arrow key code
} else if (e.getKeyCode() == KeyEvent.VK_DOWN ) {
//Down arrow key code
}
repaint();
}
Коды KeyEvent являются частью API: http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html
Ответ 3
Только для завершения ответа (с помощью KeyEvent - путь), но стрелка вверх - 38, а стрелка вниз - 40, поэтому:
else if (e.getKeyCode()==38)
{
//Up arrow key code
}
else if (e.getKeyCode()==40)
{
//down arrow key code
}
Ответ 4
Если вы имеете в виду, что хотите присоединить это к своей панели (Окно, с которым вы работаете).
тогда вам нужно создать внутренний класс, который простирается от интерфейса IKeyListener, а затем добавить этот метод в класс.
Затем присоедините этот класс к вашей панели:
this.addKeyListener(новый подкласс());
Ответ 5
Вместо фактического кода вы должны использовать такие вещи, как: KeyEvent.VK_UP.
Как вы хотите его реорганизовать? Какова цель рефакторинга?