在Java中,使用Swing库创建菜单栏和嵌套菜单是一项常见的任务。以下是一个简单的示例,展示了如何创建一个带有嵌套菜单的菜单栏。
导入必要的类
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
创建主窗口类
public class NestedMenuBarExample extends JFrame {
public NestedMenuBarExample() {
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
// 创建文件菜单
JMenu fileMenu = new JMenu("文件");
// 创建文件菜单下的子菜单
JMenu subMenu = new JMenu("子菜单");
// 添加菜单项到子菜单
JMenuItem subMenuItem1 = new JMenuItem("子项 1");
JMenuItem subMenuItem2 = new JMenuItem("子项 2");
subMenu.add(subMenuItem1);
subMenu.add(subMenuItem2);
// 添加子菜单到文件菜单
fileMenu.add(subMenu);
// 添加其他菜单项到文件菜单
JMenuItem menuItem1 = new JMenuItem("菜单项 1");
JMenuItem menuItem2 = new JMenuItem("菜单项 2");
fileMenu.add(menuItem1);
fileMenu.add(menuItem2);
// 添加文件菜单到菜单栏
menuBar.add(fileMenu);
// 设置菜单栏到窗口
setJMenuBar(menuBar);
// 设置窗口属性
setTitle("嵌套菜单示例");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
// 在事件调度线程中创建和显示此应用程序的GUI
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new NestedMenuBarExample().setVisible(true);
}
});
}
}
添加事件监听器
为了使菜单项具有实际功能,我们可以为它们添加事件监听器。
// 为子菜单项添加事件监听器
subMenuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(NestedMenuBarExample.this, "你选择了子项 1");
}
});
subMenuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(NestedMenuBarExample.this, "你选择了子项 2");
}
});
// 为菜单项添加事件监听器
menuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(NestedMenuBarExample.this, "你选择了菜单项 1");
}
});
menuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(NestedMenuBarExample.this, "你选择了菜单项 2");
}
});
运行程序
运行上述程序,你将看到一个包含嵌套菜单的窗口。点击菜单项或子菜单项时,会弹出一个消息框显示相应的信息。
这个示例演示了如何创建一个基本的嵌套菜单栏。你可以根据自己的需求调整菜单项和子菜单项,以及添加更多的事件监听器来实现更复杂的功能。
