import java.awt.event.ActionEvent; //1.菜单事件处理例程: //2.内置窗体实现 public class MenuTest { //创建一个JDesktopPane就可以在窗体内放置“内置窗体对象"; private javax.swing.JDesktopPane jdp=new javax.swing.JDesktopPane(); //程序入口 public static void main(String[] args) { MenuTest tf=new MenuTest(); tf.showUI(); } //处理菜单事件的方法 private void processMenuEvent(ActionEvent e){ //得到事件源上的命令关键字: String command=e.getActionCommand(); if(command.equals("open")){//点击了打开菜单 //创建内部窗体对象并设定其属性 javax.swing.JInternalFrame jin=new javax.swing.JInternalFrame(); jin.setTitle("我是内部窗体"); jin.setSize(200, 100); jin.setVisible(true); jin.setMaximizable(true); //加到界面上 jdp.add(jin); }else if(command.equals("new")){ //弹出一个对话框: javax.swing.JOptionPane.showInputDialog("要创建什么?"); }else if(command.equals("exit")){ //程序退出 System.exit(0); } } //显示一个加有多个组件的窗体界面 public void showUI(){ javax.swing.JFrame frame=new javax.swing.JFrame(); frame.setTitle("菜单事件处理和内部窗体示例"); //在放置元素组件前,要创建并给窗体加上流式布局管理器对象: java.awt.FlowLayout fl=new java.awt.FlowLayout(); frame.setLayout(fl); frame.setSize(300,200);//设置窗体大小 //窗体关闭时程序退出 frame.setDefaultCloseOperation(3); frame.setJMenuBar(createMB()); //将JDesktopPane对象中到窗体中, frame.setContentPane(jdp); //让窗体显示出来,这句要放到最后面 frame.setVisible(true); } //创建菜单条对象 private javax.swing.JMenuBar createMB(){ //创建菜单条: javax.swing.JMenuBar mb=new javax.swing.JMenuBar(); //1.创建文件菜单: javax.swing.JMenu m_file=new javax.swing.JMenu("文件"); //1.1创建文件菜单下的菜单项: javax.swing.JMenuItem mi_open=new javax.swing.JMenuItem("打开"); mi_open.setActionCommand("open");//设置菜单的命令关键字 javax.swing.JMenuItem mi_new=new javax.swing.JMenuItem("新建"); mi_new.setActionCommand("new"); javax.swing.JMenuItem mi_exit=new javax.swing.JMenuItem("退出"); mi_exit.setActionCommand("exit"); //创建内部料的菜单事件监听器对象: java.awt.event.ActionListener ac_listener=new java.awt.event.ActionListener(){ public void actionPerformed(ActionEvent e){ //调用统一的处理方法 processMenuEvent(e); } }; //1.2 给菜单项加上事件监听器: mi_open.addActionListener(ac_listener); mi_new.addActionListener(ac_listener); mi_exit.addActionListener(ac_listener); //1.2将菜单项加到文件菜单上: m_file.add(mi_open); m_file.add(mi_new); m_file.add(mi_exit); //3.将文件和功能菜单加到菜单条上: mb.add(m_file); return mb; } } |