【问题标题】:Java Swing: Can I set a button mnemonic that doesn't require pressing alt?Java Swing:我可以设置一个不需要按 alt 的按钮助记符吗?
【发布时间】:2010-03-02 22:10:25
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java user-interface swing mnemonics


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-08-20
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          • 2011-06-02
          • 2012-06-10
          • 2016-05-01
          • 1970-01-01
          相关资源
          最近更新 更多