首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能帮我理解一下ACCELERATOR_KEY在Java中是如何工作的吗?

有人能帮我理解一下ACCELERATOR_KEY在Java中是如何工作的吗?
EN

Stack Overflow用户
提问于 2020-09-06 02:23:31
回答 1查看 65关注 0票数 0

我正在尝试理解ACCELERATOR_KEY是如何使用的,以及它有什么作用。我在网上找到了一个代码示例,它展示了如何使用它,但当我运行代码时,似乎什么都没有发生。

如果我不得不猜测,似乎ACCELERATOR_KEY允许用户将键盘命令分配给某些东西,但在本例中,当我按下‘A’时,什么也没有发生。任何想法或解释都将不胜感激!谢谢!

代码语言:javascript
复制
    // w w w  .  java 2  s .c o  m

   import java.awt.BorderLayout;
   import java.awt.event.ActionEvent;
   import javax.swing.AbstractAction;
   import javax.swing.Action;
   import javax.swing.JCheckBox;
   import javax.swing.JFrame;
   import javax.swing.KeyStroke;





     public class Main {
      public static void main(String[] a) {

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Action action = new ShowAction();
        JCheckBox button = new JCheckBox(action);

        frame.add(button, BorderLayout.CENTER);
        frame.setSize(350, 150);
        frame.setVisible(true);
      }
    }

     class ShowAction extends AbstractAction {
       public ShowAction() {
         super("About");

         putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("A"));
         putValue(Action.NAME, "Go to number ");

      }
       public void actionPerformed(ActionEvent actionEvent) {
         System.out.println("About Swing");
      }
    }
EN

回答 1

Stack Overflow用户

发布于 2020-09-06 03:23:47

如果我一定要猜的话,ACCELERATOR_KEY似乎允许用户将键盘命令分配给某些东西

对,是这样。

但是,如果您阅读了Action应用程序接口,您将看到ACCELERATOR_KEY仅用于扩展JMenuItem的组件(JMenu除外)。

如果要使用"A“作为KeyStroke来调用JCheckBoxAction,则需要使用Key Bindings通过复选框的InputMapActionMap手动执行绑定。

有关更多信息,请阅读How to Use Key Bindings上的Swing教程中的部分。

注本教程还有一个关于How to Use Menus的部分,该部分中的演示代码演示了如何使用加速器。

您也可以尝试How to Use Actions部分。该演示中使用的操作由菜单项和按钮使用。您可以尝试在Action中添加一个加速器,以查看两个组件之间的差异。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63757206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档