环境:java1.8+ Mysql8.0.22 +idea
第一步。先生成菜单对象并定义初始化函数将主框架初始化
//生成菜单栏对象
JMenuBar MenuBar = new JMenuBar();
//生成并定义菜单选项
JMenu menu1 =new JMenu("商品管理");
JMenu menu2 =new JMenu("订单记录");
JMenu menu3 =new JMenu("用户管理");
JMenu menu4 =new JMenu("系统帮助");
JMenu menu5 =new JMenu("退出系统");
//定义各级菜单的子项
JMenuItem menu1Item01 =new JMenuItem("上架商品");
JMenuItem menu1Item02 =new JMenuItem("下架商品");
JMenuItem menu3Item01 =new JMenuItem("删除用户");
JMenuItem menu3Item02 =new JMenuItem("修改用户");
JMenuItem menu3Item03 =new JMenuItem("查询用户");
JMenuItem menu3Item04 =new JMenuItem("添加用户");
JMenuItem menu5Item01 =new JMenuItem("保存preview");
JMenuItem menu5Item02 =new JMenuItem("不保存printOUT");
第二步。将菜单组件组装成菜单栏
//这里为了方便直接写在了主类的构造函数里
public MainFrame(){
super();
//将菜单选项与菜单栏绑定
MenuBar.add(menu1);
MenuBar.add(menu2);
MenuBar.add(menu3);
MenuBar.add(menu4);
MenuBar.add(menu5);
//将菜单子项与对应菜单选项绑定
menu1.add(menu1Item01);
menu1.add(menu1Item02);
menu3.add(menu3Item01);
menu3.add(menu3Item02);
menu3.add(menu3Item03);
menu3.add(menu3Item04);
menu5.add(menu5Item01);
menu5.add(menu5Item02);
this.setJMenuBar(MenuBar);//将菜单初始化
//注册监听事件
menu1Item01.addActionListener(this);
menu1Item02.addActionListener(this);
menu3Item01.addActionListener(this);
menu3Item02.addActionListener(this);
menu3Item03.addActionListener(this);
menu3Item04.addActionListener(this);
menu5Item01.addActionListener(this);
menu5Item02.addActionListener(this);
//设置icon
Icon picture = new ImageIcon("a2.JPG");
JLabel logo = new JLabel();
logo.setIcon(picture);
this.add(logo);
//设置标题
this.setTitle("天天美食外卖系统");
//设置窗口
this.setSize(898,550);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关闭系统后结束程序
}
第三步。另外为了实现事件监听,主类实现了ActionListener(public class MainFrame extends JFrame implements ActionListener)接口所以要重写接口内的抽象方法即actionPerfoemed()来对菜单选项进行监听
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==menu5Item01){
System.out.println("成功了!");
System.exit(0);
}else if (e.getSource()==menu1Item01){
}else if (e.getSource()==menu1Item02){
}else if (e.getSource()==menu3Item01){
}else if (e.getSource()==menu3Item02){
}else if (e.getSource()==menu3Item03){
}else if (e.getSource()==menu3Item04){
}else if (e.getSource()==menu5Item02){
System.out.println("已退出");
System.exit(0);
}
}
综上便可实现主框架的大致内容,监听的部分代码还有待完善,系统整体功能也有待完善。下面写个测试函数测试一下,截图如下
有可能会遇到菜单选项乱码的问题,可以参考我的上篇随笔来解决。