gpt4 book ai didi

Java - 使用 KeyBindings 检测任何按键?

转载 作者:行者123 更新时间:2023-11-30 06:25:23 24 4
gpt4 key购买 nike

我读到使用 KeyBindings 比使用 KeyListeners 更好。我看到了 KeyBindings 如何对特定键的特定 react 有用;但我也在尝试检测键盘上任何键的按下/释放:有没有办法用 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?例如。将 Enter-action 映射,而不管是否保留任何修饰符,或者是否同时保留任何组合的 ctrl-alt 等?

非常感谢,丹

交叉发布于:http://www.javaprogrammingforums.com/whats-wrong-my-code/26194-how-detect-any-key-press-keybindings.html#post103862

最佳答案

I see how KeyBindings are useful for a specific reaction to a specific key;

是的,那是你会使用键绑定(bind)的时候

but I am also trying to detect the press/release of ANY key on the keyboard: is there a way to do this with KeyBindings?

不,键绑定(bind)不用于此目的。

Also, is there a way to catch they KeyBinding with ANY modifiers combination?

不,再次绑定(bind)是针对特定的 KeyStroke。因此,您需要编写一种方法来为每个组合添加绑定(bind)。请注意,顺序无关紧要。即 Shift+Alt 与 Alt+Shift 相同

在大多数情况下,键绑定(bind)是首选方法。在你的情况下它不是。

如果您正在监听具有焦点的特定组件上的 KeyEvent,则 KeyListener 可能是合适的。

或者你想在更全局的基础上监听 KeyEvents 那么你可以看看 Global Event Listeners或者也许 Global Event Dispatching取决于您的具体要求。

关于Java - 使用 KeyBindings 检测任何按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com