【发布时间】:2015-01-16 18:39:54
【问题描述】:
我如何检测KeyEvent 的Windows key 修饰符?我已经添加了代码:
textField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if ((e.getKeyCode() & KeyEvent.VK_ESCAPE) == KeyEvent.VK_ESCAPE) {
textField.setText("");
}
}
});
但问题是,当我使用Windows zoom 并尝试使用Win + Escape 退出它时,如果焦点在TextField,它的内容就会清除。我试过按e.getModifiersEx() 过滤,但它返回0。我发现的唯一方法是检测Windows 是否按下,是创建boolean 字段并在Windows 按下/释放时更改它的值。
那么,有什么方法可以从KeyEvent 获取ESCAPE released 事件的Windows 键压状态?
【问题讨论】:
-
这篇文章可能会有所帮助:stackoverflow.com/questions/7851505/….
-
是的,我知道
KeyStrokes,但有没有办法只通过KeyListener做到这一点? -
这可能很难。在教程 (docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html) 中,按下组合键时它将发送几个事件。你试过
KeyEvent.getModifiers吗? -
当然,
getModifiers和getMofidiersEx()都试过了