7

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

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

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

有没有办法打开按钮助记符的元键?

4

3 回答 3

4

动作可以将一大段代码绑定到菜单项、击键、按钮以及您感兴趣的任何其他内容。

一般来说,不要认为您的代码与特定的按键/事件相关联——也不要使用匿名内部类。而是使用真正的类,你的代码可以被重用于不同类型的东西。Action 类使用的模式提供了一些很好的例子。

于 2010-03-02T22:13:43.653 回答
3

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

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

于 2010-03-02T23:29:27.010 回答
0

如果按钮是使用操作配置的,您确定不能在按钮上定义加速键吗?(我知道这在某一时刻是正确的,但我认为这在 Java 的更高版本中可能会有所不同。)

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

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

其中 myKeyStroke 是诸如 F3 之类的击键,“actionName”是一个标签(字符串),而 myAction 是它调用的动作。

于 2010-03-03T22:18:37.917 回答