使用 ActionBinding 按下组合键
Combined key's pressed with ActionBinding
我得到这段代码来识别用户是否按下了 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");
}
});
不幸的是,该方法从未被输入。
目前我不知道我错过了什么。
你能帮帮我吗?
组件有三个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
查看更多
我得到这段代码来识别用户是否按下了 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");
}
});
不幸的是,该方法从未被输入。
目前我不知道我错过了什么。
你能帮帮我吗?
组件有三个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 查看更多