java如何设置菜单
设置菜单的基本方法
在Java中创建菜单通常使用Swing库的JMenuBar、JMenu和JMenuItem类。以下是一个简单的示例代码:
import javax.swing.*;
public class MenuExample {
public static void main(String[] args) {
JFrame frame = new JFrame("菜单示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
// 创建文件菜单
JMenu fileMenu = new JMenu("文件");
JMenuItem openItem = new JMenuItem("打开");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem exitItem = new JMenuItem("退出");
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.addSeparator(); // 添加分隔线
fileMenu.add(exitItem);
// 创建编辑菜单
JMenu editMenu = new JMenu("编辑");
JMenuItem cutItem = new JMenuItem("剪切");
JMenuItem copyItem = new JMenuItem("复制");
JMenuItem pasteItem = new JMenuItem("粘贴");
editMenu.add(cutItem);
editMenu.add(copyItem);
editMenu.add(pasteItem);
// 将菜单添加到菜单栏
menuBar.add(fileMenu);
menuBar.add(editMenu);
// 设置菜单栏
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
}
添加菜单事件处理
菜单项需要添加事件监听器才能响应用户操作:
exitItem.addActionListener(e -> System.exit(0));
openItem.addActionListener(e -> {
JFileChooser fileChooser = new JFileChooser();
fileChooser.showOpenDialog(frame);
});
创建子菜单
可以在主菜单中添加子菜单:

JMenu recentFilesMenu = new JMenu("最近文件");
fileMenu.add(recentFilesMenu);
// 添加子菜单项
JMenuItem file1 = new JMenuItem("文档1.txt");
JMenuItem file2 = new JMenuItem("图片.jpg");
recentFilesMenu.add(file1);
recentFilesMenu.add(file2);
添加图标和快捷键
可以为菜单项添加图标和快捷键:
ImageIcon openIcon = new ImageIcon("open.png");
openItem.setIcon(openIcon);
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
使用复选框菜单项
对于需要切换状态的选项,可以使用JCheckBoxMenuItem:

JCheckBoxMenuItem showStatusItem = new JCheckBoxMenuItem("显示状态栏");
showStatusItem.setSelected(true);
fileMenu.add(showStatusItem);
使用单选按钮菜单项
对于互斥的选项,可以使用JRadioButtonMenuItem:
ButtonGroup viewGroup = new ButtonGroup();
JRadioButtonMenuItem normalView = new JRadioButtonMenuItem("普通视图");
JRadioButtonMenuItem compactView = new JRadioButtonMenuItem("紧凑视图");
viewGroup.add(normalView);
viewGroup.add(compactView);
editMenu.add(normalView);
editMenu.add(compactView);
禁用菜单项
可以根据条件禁用某些菜单项:
pasteItem.setEnabled(false); // 禁用粘贴选项
弹出式菜单
除了主菜单栏,还可以创建弹出式菜单(右键菜单):
JPopupMenu popupMenu = new JPopupMenu();
popupMenu.add(new JMenuItem("复制"));
popupMenu.add(new JMenuItem("粘贴"));
frame.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
popupMenu.show(e.getComponent(), e.getX(), e.getY());
}
}
});






