我得到这段代码来识别用户是否按下了 ctrl + A 按钮:
mPanel.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK), "ALL");
mPanel.getActionMap().put("ALL", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("All");
}
});
不幸的是,该方法从未被输入。
目前我不知道我错过了什么。
你能帮帮我吗?
最佳答案
组件有3个InputMap
-
JComponent.WHEN_IN_FOCUSED_WINDOW
-
JComponent.WHEN_FOCUSED
-
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
当不带参数调用getInputMap
时,它隐含地暗示
getInputMap(JComponent.WHEN_FOCUSED)
所以你应该使用 getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
- 查看更多信息 How to use Key Bindings
关于java - 使用 ActionBinding 按下组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455402/