【发布时间】:2013-03-24 22:55:59
【问题描述】:
我试图在我正在创建的图像编辑应用程序中创建用于放大和缩小的快捷方式,但我发现了一些奇怪的东西。要绑定 ctrl + + 的组合,我必须使用 = 键和一个控制和移位掩码:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.CTRL_DOWN_MASK + KeyEvent.SHIFT_DOWN_MASK),"ZoomIn");
我尝试直接绑定到VK_PLUS 的组合都不起作用:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK + KeyEvent.SHIFT_DOWN_MASK),"ZoomIn");
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, KeyEvent.CTRL_DOWN_MASK),"ZoomIn");
它现在与第一行代码一起工作,但我想知道为什么底部两个都不起作用,如果键盘没有 +,这是否(理论上)会成为问题> 键作为移位的 = 键。
【问题讨论】:
-
你显然不明白修饰符是如何使用的。你的第二个例子几乎是正确的,但第二个参数是
a bitwise-ored combination of any modifiers(来自JavaDocs)不是的总和 -
@MadProgrammer 是的,我忘了我应该使用按位或而不是加法,但这不是问题。
-
我看到的问题是,您似乎认为
KeyEvent.VK_PLUS代表+符号上方的=符号。我认为KeyEvent.VK_PLUS实际上代表小键盘上的+键。你可以做的是使用带有shift+ctrl修饰符的KeyEvent.VK_EQUALS和带有ctrl修饰符的KeyEvent.VK_PLUS -
我的立场是正确的,小键盘
+是VK_ADD
标签: java swing keyboard-shortcuts key-bindings