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

时间:2010-03-02 22:10:26

标签: java user-interface swing mnemonics

例如,假设我的应用程序主窗口顶部有一系列工具栏样式的按钮。我想在其中一个附加一个助记符,这只是一个按键,就像F3一样。

当您将助记符设置为KeyEvent.VK_F3时,用户必须按Alt + F3。

如果您有菜单项,则可以设置加速器而不是助记符,并选择是否使用元键。但是,按钮不允许您设置加速器。

有没有办法转动按钮助记符的元键?

3 个答案:

答案 0 :(得分:4)

Actions可以将一大块代码绑定到菜单项,按键,按钮以及您感兴趣的任何其他内容。

通常,不要将您的代码视为与特定按键/事件相关联 - 并且不要使用匿名内部类。而是使用真正的类,您的代码可以重用于不同类型的事物。 Action类使用的模式给出了一些很好的例子。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

如果使用动作配置按钮,您确定无法在按钮上定义加速器吗? (我知道这一点确实如此,但我认为在以后的Java版本中这可能会有所不同。)

无论如何,这是另一种在按钮上设置它的方法:

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

如果myKeyStroke是一个键击,例如F3,“actionName”是一个标签(String),myAction是它调用的动作。