Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测Windows键修改器_Java_Keyevent - Fatal编程技术网

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()