一尘不染

KeyListener如何检测组合键(例如ALT +1 + 1)

java

如何让我的自定义项KeyListener侦听ALT(或CTRL与此相关)+一个以上其他键的组合?

假设我要应用程序执行11种不同的操作,具体取决于所按下的键的组合。ALT + 0- ALT + 9显然没有任何问题,但是对于ALT + 1 + 0(或“ ALT +
10”,它可以在帮助文件或类似文件中进行描述),我无法在网络上的任何地方(或脑海中)找到一个好的解决方案。我不相信这种带有计时器的解决方案是唯一可能的方法。

预先感谢一百万个任何建议!

编辑: 动作0-9 +动作10 = 11个动作。谢谢@ X-Zero。


阅读 327

收藏
2020-09-08

共1个答案

一尘不染

您不应将KeyListener用于这种类型的交互。而是使用键绑定,您可以在Java教程中了解这些键绑定。然后,您可以使用InputEvent掩码来表示何时不赞成使用各种修饰键。例如:

// Component that you want listening to your key
JComponent component = ...;
component.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,
                            java.awt.event.InputEvent.CTRL_DOWN_MASK),
                    "actionMapKey");
component.getActionMap().put("actionMapKey",
                     someAction);

有关获取KeyStroke时可以使用的不同代码,请参见javadoc
的KeyStroke。这些修饰符可以进行“或”运算以表示键的各种组合。如

KeyStroke.getKeyStroke(KeyEvent.VK_SPACE,
                       java.awt.event.InputEvent.CTRL_DOWN_MASK
                       | java.awt.event.InputEvent.SHIFT_DOWN_MASK)

表示何时Ctrl + Shift按下琴键。

编辑: 正如已经指出的那样,这不能回答您的问题,而应作为一些好的建议。

2020-09-08