Java 详解菜单组件

在这篇文章中, 笔者会介绍 Java 图形界面编程中菜单组件的用法关于菜单组件, 因为 java 存在 AWT 编程和 Swing 编程, 所以菜单组件也存在 AWT 菜单和 Swing 菜单因为 Swing 组件使用的比较多, 所以笔者的案例中都是运用 Swing 菜单中的类

在介绍 Swing 菜单之前, 先看看 AWT 菜单组件的类关系图:

javaee 菜单实现 java设置菜单项的快捷键_Swing

Swing 菜单组件与 AWT 菜单组件中的类结构类似

Swing 菜单组件的用法在 API 中已经给出了, 所以笔者在这里不必要列出这里笔者要说一说, Swing 菜单组件中的快捷键, 下面笔者会详细介绍 Swing 中菜单的快捷键

public void setMnemonic(int mnemonic)

这个方法可以设置键盘助记字符, 不过该方法的使用是依赖 Swing 组件的菜单分层结构的, 也就是说设置了该助记字符的菜单项目必须已经展开了, 才能使用 (通过和 Alt + 键结合使用),

例如:JFramejf=newJFrame("窗口测试");

JMenuBarbar=newJMenuBar();
JMenufile=newJMenu("菜单");
JMenuItemcreatefile=newJMenuItem("创建文件 VK_N");
createfile.setMnemonic(KeyEvent.VK_N);
createfile.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEventarg0){
System.out.println("创建文件被点击");
}
});
file.add(createfile);
bar.add(file);
jf.setJMenuBar(bar);
jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);

效果图为:

javaee 菜单实现 java设置菜单项的快捷键_java菜单如何点解_02

如果在上面这种图片的效果下, 摁下 Ctr+N 的话, 控制台是不会打印东西的, 只有把鼠标移到菜单上, 看见创建菜单项后, 使用 Ctr+N 控制台才会打印消息

值得注意的是 setMnemonic 并非是 JMenuItem 的方法, 而是来着他的父类 AbstractButton 的, 所以该方法通常是不应用于菜单项的

JMenuItem 自身有一个方法 public void setAccelerator(KeyStroke keyStroke) 该方法的功能要比上面的那个方法要强大, 该方法可以设置菜单项的快捷键, 它是不依赖菜单的分层结构的

例如:JFramejf=newJFrame("窗口测试");

JMenuBarbar=newJMenuBar();
JMenufile=newJMenu("菜单");
JMenuItemcreatefile=newJMenuItem("创建文件");
createfile.setAccelerator(KeyStroke.getKeyStroke(N,InputEvent.CTRL_DOWN_MASK));
createfile.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEventarg0){
System.out.println("创建文件被点击");
}
});
file.add(createfile);
bar.add(file);
jf.setJMenuBar(bar);
jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);

效果图:

javaee 菜单实现 java设置菜单项的快捷键_创建文件_03

摁下 Ctr+N 键的话, 控制台就会打印消息了

同时我们也可以看到, 快捷键也被附加在文字的后面了