, поскольку по умолчанию ОС обеспечивают только ключ-управляемую событиями поддержку, которую вы должны написать свой собственный драйвер клавиатуры, где вы можете предоставить методы опрашивать состояние ключа ...
(помните, что у вас нет аппаратных штифтов на клавиатуре для каждой клавиши, которая может быть проверена, как вы привыкли делать на микроконтроллере, сама клавиатура обрабатывает состояния и отправляет события в ОС, которые на своей стороне вызывают «прерывания». Эти перехваты обрабатываются драйвером, а именно драйвер клавиатуры)
Writing a keyboard device driver
вы можете более easiliy написать свой собственный класс клавиатуры, который отображает все keyevents и могут быть опрошены
class KeyboardState extends KeyAdapter{
boolean[] keyState = new boolean[256];
@Override
public void keyPressed (KeyEvent ke){
keyState[ke.keyCode] = true;
}
@Override
public void keyReleased(KeyEvent ke){
keyState[ke.keyCode] = false;
}
public boolean isKeyDown(int keyCode){
return keyState[keyCode];
}
}
этот код был написан непосредственно в SO поэтому не проверка ... Не забудьте добавить вам клавиатуру к в соответствии кадр ...
(если вы слушаете утешать вход, дайте мне знать, - этот ответ обыкновение вписываться в то время) ...
, что вы имеете в виду под «постоянно опрашивает состояние значения Я нахожусь наблюдения "? –
Да, вам нужно добавить keylistener в свой родительский компонент, который направит уже существующий keypressevent на ваш компонент. https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html – HopefullyHelpful
принципы описаны в https://en.wikipedia.org/wiki/Observer_pattern шаблоне наблюдателя .... –