2013-06-16 3 views
1

Я работаю над игрой на Java, которая использует Keyevents. В принципе, это шаблон, который я хотел бы улучшить, но теперь я борюсь с некоторыми основными вещами. Вот он идет:Почему мои ключевые события не работают?

В методе Keypressed() целый ряд событий, как это:

public void keyPressed(int key) { 
    switch (key) { 
    case KeyEvent.VK_A: 
     System.out.println("A"); 
     methodA(); 
     break; 
    case KeyEvent.VK_B: 
     System.out.println("B"); 
     methodB(); 
     break; 
    } 
} 

Однако, когда я пытаюсь добавить еще один KeyEvent, как KeyEvent.VK_1, он не работает/ключ не признается. Почему это? Я что-то упускаю?

+1

Что не работает? Возможно, вам стоит взглянуть на http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html –

+0

ваш код даже является типом KeyEvent – nachokk

+2

Не можете ли вы ответить на любые другие ключи? Или просто цифровые клавиши? Если Swing, считаете ли вы использование Key Bindings? Какой '1' вы пытаетесь распознать? Тот, что находится на верхней части клавиатуры или один на цифровой клавиатуре в сторону? На самом деле это имеет значение. –

ответ

1

KeyListener имеет хорошо известную проблему. Чтобы получать ключевые события, компонент, который он регистрирует, должен быть фокусируемым и иметь фокус. Также возможно, что ключевое событие будет потреблено до того, как оно достигнет вашего слушателя (по компоненту, на который вы зарегистрированы).

Вместо этого, вы должны быть Key Bindings, который будет, даст вам большую гибкость в определении того, как ключевые события обрабатываются

+0

'Также возможно, чтобы ключевое событие было потреблено до того, как оно дошло до вашего слушателя. Означает ли это, что иногда методы' KeyListener' не вызываются, хотя 'KeyEvent' запускается связанным компонентом? –

+2

Да. Поскольку прослушиватели клавиш закованы в цепочку, если один из них потребляет событие, другие могут не быть отключены. Tis придет к тому, как будет отправлено событие, но я споткнулся об этом в мои ранние годы Swing. – MadProgrammer

+0

Ahh..I теперь вижу .. Спасибо за эту ценную информацию :) +1 –

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