Java 检测Windows键修改器
如何检测Java 检测Windows键修改器,java,keyevent,Java,Keyevent,如何检测KeyEvent的Windows键修改器?我已添加代码: textField.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { if ((e.getKeyCode() & KeyEvent.VK_ESCAPE) == KeyEvent.VK_ESCAPE) { textField.setText(""); } } }
KeyEvent
的Windows键
修改器?我已添加代码:
textField.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if ((e.getKeyCode() & KeyEvent.VK_ESCAPE) == KeyEvent.VK_ESCAPE) {
textField.setText("");
}
}
});
但问题是,当我使用Windows缩放
并尝试使用Win+Escape
退出时,如果焦点位于TextField
,则其内容将被清除。我尝试了按e.getModifiersEx()
进行筛选,但它返回0
。我发现的唯一方法是检测是否按下了Windows
,即创建boolean
字段,并在按下/释放Windows
时更改其值
那么,是否有任何方法可以从
KeyEvent
获取Windows
按键压力状态,用于ESCAPE released
事件?我自己使用的方法:
AbstractAction escapeAction = AbstractAction() {
public void actionPerfomed(ActionEvent e) {
setText("");
}
}
textField.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
if (textField.getText() == null || textField.getText().isEmpty()) {
textField.getActionMap().remove("escape");
textField.getInputMap().remove(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
} else {
textField.getActionMap().put("escape", escapeAction);
textField.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), escapeAction);
}
}
});
这篇文章可能会有帮助:。是的,我知道有关击键的问题,但有没有办法只通过击键器来做到这一点?这可能很难。在教程()中,当按下组合键时,它将发送几个事件。你试过
KeyEvent.getModifiers
吗?当然,我试过getModifiers
和getMofidiersEx()