我试图了解如何使用加速键及其作用。我在网上找到了一个代码示例,演示了如何使用它,但当我运行代码时,似乎什么都没有发生。
如果非要我猜的话,似乎加速键允许用户为某个东西分配键盘命令,但是在这个例子中,当我按“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");
}
}
1条答案
按热度按时间jvlzgdj91#
如果非要我猜的话,似乎加速键允许用户分配一个键盘命令给某个东西
对的。
但是,如果你读了
Action
api您将看到ACCELERATOR_KEY
仅用于延伸的组件JMenuItem
(jmenu除外)。如果你想用“a”作为
KeyStroke
调用Action
对于JCheckBox
,则需要使用Key Bindings
使用InputMap
以及ActionMap
复选框的。阅读swing教程中有关如何使用键绑定的部分以获取更多信息。
注意本教程还有一节介绍
How to Use Menus
该部分的演示代码演示了如何使用加速器。你也可以试试
How to Use Actions
部分。该演示中使用的操作由菜单项和按钮使用。您可以尝试在操作中添加加速器,以查看两个组件之间的差异。