【发布时间】:2013-03-23 19:12:54
【问题描述】:
我读到使用 KeyBindings 比使用 KeyListeners 更好。我看到 KeyBindings 如何对特定键的特定反应有用;但我也试图检测键盘上任何键的按下/释放:有没有办法用 KeyBindings 做到这一点?
例如,我通常会使用 KeyBindings 来作用于单个键:
InputMap iMap = component.getInputMap();
ActionMap aMap = component.getActionMap();
iMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "enter without modifiers");
aMap.put("enter without modifiers", new AbstractAction(){
public void actionPerformed(ActionEvent a){
System.out.println("Enter pressed alone");
});
所以我想这样来检测任何按键:
iMap.put(KeyStroke.getKeyStroke(KeyEvent.KEY_PRESSED, 0), "any key was pressed");
aMap.put("any key was pressed", new AbstractAction(){
public void actionPerformed(ActionEvent a){
System.out.println("some key was pressed, regardless of which key...");
});
有没有办法做到这一点?
另外,有没有办法用任何修饰符组合来捕捉它们的 KeyBinding?例如。无论是否保留任何修饰符,或者是否同时保留了任何组合的 ctrl-alt 等,都映射 Enter-action?
非常感谢, 丹
【问题讨论】:
-
此请求已解决。您是否删除了我在其他网站上的帖子?因为如果是这样的话,我什至不明白让我交叉引用它有什么意义......
-
我没看到。但无论如何,如果你能回答我,我将不胜感激。
标签: java swing key keypress key-bindings