在我的Swing应用程序中,我需要设置一些全局键绑定。我为此使用KeyEvent Dispatcher,如下所示:
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;
}
}
我的问题是,当我按下F8时会调用两次,一次用于keyup,一次用于keydown。如何检测是否是keyup或keydown事件?
我以为我在这里找到了答案:dispatchKeyEvent() invoking twice,但不幸的是,这只适用于Android。
答案 0 :(得分:1)
答案来自@biziclop的评论:使用e.getID()来检测关键事件。还注意到我应该检查修改器以避免在Shift + F8,Ctrl + F8等上触发。
(e.getKeyCode() == KeyEvent.VK_F8 && e.getID() == KeyEvent.KEY_PRESSED && e.getModifiers() == 0)