Java Swing:我可以设置一个不需要按下Alt键的按钮助记符吗?

7
例如,假设我在应用程序的主窗口上方有一系列类似于工具栏的按钮。 我想将助记符附加到其中一个按钮上,只需按下单个按键,例如F3。
当您将助记符设置为KeyEvent.VK_F3时,用户必须按下Alt + F3。
如果您有一个菜单项,可以设置加速键而不是助记符,并选择是否使用元键。 但是,按钮不允许您设置加速键。
有没有办法关闭按钮助记符的元键?
3个回答

4

Actions 可以将一段代码绑定到菜单项、按键、按钮或其他感兴趣的地方。

通常不要将你的代码视为与特定的按键/事件相关联,也不要使用匿名内部类。相反,使用真正的类,使你的代码可以被不同类型的事物重用。Action类使用的这种模式提供了一些很好的例子。


3

在幕后,无论您在组件上使用加速器还是助记符,该方法都会为您创建一个键绑定

因此,没有任何阻止您将KeyStroke和Action绑定到任何组件并手动创建Key Binding。它甚至可以是没有setMNemonic(...)方法的组件。


0

你确定如果使用Action配置按钮,就不能在按钮上定义加速器吗?(我知道这曾经是正确的,但我认为在Java的后续版本中可能会有所不同。)

无论如何,这里有另一种在按钮上设置加速器的方法:

button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(myKeyStroke, "actionName");
button.getActionMap().put("actionName", myAction);

其中myKeyStroke是一个键盘按键,例如F3,“actionName”是一个标签(字符串),而myAction是它调用的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接