有人能帮我理解java中加速器的工作原理吗?

s1ag04yj  于 2021-07-04  发布在  Java
关注(0)|答案(1)|浏览(393)

我试图了解如何使用加速键及其作用。我在网上找到了一个代码示例,演示了如何使用它,但当我运行代码时,似乎什么都没有发生。
如果非要我猜的话,似乎加速键允许用户为某个东西分配键盘命令,但是在这个例子中,当我按“a”时,什么也没有发生。任何想法或解释将不胜感激!谢谢您!

// 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");
      }
    }
jvlzgdj9

jvlzgdj91#

如果非要我猜的话,似乎加速键允许用户分配一个键盘命令给某个东西
对的。
但是,如果你读了 Action api您将看到 ACCELERATOR_KEY 仅用于延伸的组件 JMenuItem (jmenu除外)。
如果你想用“a”作为 KeyStroke 调用 Action 对于 JCheckBox ,则需要使用 Key Bindings 使用 InputMap 以及 ActionMap 复选框的。
阅读swing教程中有关如何使用键绑定的部分以获取更多信息。
注意本教程还有一节介绍 How to Use Menus 该部分的演示代码演示了如何使用加速器。
你也可以试试 How to Use Actions 部分。该演示中使用的操作由菜单项和按钮使用。您可以尝试在操作中添加加速器,以查看两个组件之间的差异。

相关问题