我读到使用 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...");
});
有没有办法做到这一点?
另外,有没有办法用 ANY 修饰符组合来捕捉它们的 KeyBinding?例如,无论是否持有任何修饰符,或者是否持有任何组合的 ctrl-alt 等,都映射 Enter-action?
非常感谢,丹