1
Swing 응용 프로그램에서 일부 전역 키 바인딩을 설정해야합니다. 나는 이런 식으로, 이것에 대한 KeyEvent를 Dispatcher를 사용KeyEventDispatcher가 Java에서 두 번 호출되었습니다.
public class MyKeyEventDispatcher implements KeyEventDispatcher
{
@Override
public boolean dispatchKeyEvent(KeyEvent e)
{
if (!e.isConsumed())
{
if (e.getKeyCode() == KeyEvent.VK_F8)
{
System.out.println("F8");
e.consume();
return true;
}
}
return false;
}
}
내 문제는 내가를 keyDown에 대해 한 번의 keyup에 대해 한 번의 F8을 눌러 때이 두 번 호출 될 것입니다. 키 입력 또는 keydown 이벤트인지 어떻게 알 수 있습니까?
내가 대답을 찾은 것 : dispatchKeyEvent() invoking twice,하지만 불행히도, 안드로이드에서만 작동합니다.
이렇게하려면 대신 KeyListener// KeyAdapter를 사용 하시겠습니까? 이 인터페이스는 키 - 다운과 키 - 업을위한 하나의 메소드를 정의합니다 (키 - 눌려진 모든 표시 가능한 문자에 대한 aditionaly) – msrd0
실제로는 KEY_PRESSED, KEY_TYPED 및 KEY_RELEASED의 세 가지를 가져와야합니다. e.getID() == KeyEvent.KEY_PRESSED를 사용하여 이벤트 유형을 확인할 수 있습니다. (생각해 보니 F8은 특별한 키이므로 KEY_TYPED를 얻지 못할 것입니다.) – biziclop
또 다른 가치있는 것은'getModifiers()'메소드입니다. Alt + F8, Ctrl + Shift + F8 등이 있습니다. – biziclop