检测Windows键修饰符

时间:2014-11-19 09:45:21

标签: java keyevent

如何检测Windows key的{​​{1}}修饰符?我添加了代码:

KeyEvent

但问题是,当我使用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来自Windows事件的KeyEvent关键压力状态?

1 个答案:

答案 0 :(得分:0)

我自己使用的方式:

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);
        }
    }
});