如何解决有人可以帮助我了解ACCELERATOR_KEY在Java中如何工作吗?
我正在尝试了解ACCELERATOR_KEY的用法和用途。我在网上找到了一个代码示例,说明了如何使用它,但是当我运行代码时,似乎什么也没发生。
如果我不得不猜测ACCELERATOR_KEY似乎允许用户将键盘命令分配给某些内容,但是在此示例中,当我按“ 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");
}
}
解决方法
如果我不得不猜测,似乎ACCELERATOR_KEY允许用户将键盘命令分配给某些东西
正确。
但是,如果您阅读Action
API,则会看到ACCELERATOR_KEY
仅用于扩展JMenuItem
的组件(JMenu除外)。
如果您想使用“ A”作为KeyStroke
来为Action
调用JCheckBox
,则需要使用Key Bindings
来手动进行绑定使用复选框的InputMap
和ActionMap
。
有关更多信息,请阅读How to Use Key Bindings上的Swing教程中的部分。
请注意,本教程在How to Use Menus
上也有一节,该节中的演示代码演示了如何使用加速器。
您也可以尝试How to Use Actions
部分。该演示中使用的动作同时被菜单项和按钮使用。您可以尝试在Action中添加加速器,以查看两个组件之间的区别。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。