日期:2014-05-20  浏览次数:20725 次

java 菜单,以字符数组的方式添加菜单项时如何给菜单项添加事件处理
例如:
JMenuItem item1;
JMenuItem item2;
JMenuItem item3;
JMenuItem item4;
JMenuItem item5;
String[] str1 = { "关于系统","退出系统" };
String[] str2 = { "增加用户", "删除用户", "修改用户", "查看系统用户" };
String[] str3 = { "进入管理系统", "生成报表"};
String[] str4 = { "进入购物系统"};
String[] str5 = { "游客注册","用户指南"};
for (int i = 0; i < str1.length; i++) {
item1 = new JMenuItem(str1[i]);
menu1.add(item1);
}
for (int i = 0; i < str2.length; i++) {
item2 = new JMenuItem(str2[i]);
menu2.add(item2);
}
for (int i = 0; i < str3.length; i++) {
item3 = new JMenuItem(str3[i]);
menu3.add(item3);
}
for (int i = 0; i < str4.length; i++) {
item4 = new JMenuItem(str4[i]);
menu4.add(item4);
}
for (int i = 0; i < str5.length; i++) {
item5 = new JMenuItem(str5[i]);
menu5.add(item5);
}
如果以上面的方式创建菜单项,如何给菜单项添加事件处理?

------解决方案--------------------
应该使用Action类,既可以添加到菜单有可以添加到工具条,还可以用来新建JButton。可以当作ActionListener使用。
------解决方案--------------------
我程序里面的一段你应该能看懂:
MenuItem exitItem = new MenuItem(" 退出程序 ");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (JOptionPane.showConfirmDialog(null, "确定退出系统") == 0) {
System.exit(0);
}
}
------解决方案--------------------
Java code

public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();
        if ("退出".equals(cmd)) {
            if (wasSaved == false) {
                int op = JOptionPane.showConfirmDialog(jf, "文件没保存是否退出?",
                        "确认退出", JOptionPane.YES_NO_CANCEL_OPTION);
                if (op != JOptionPane.YES_OPTION) {
                    return;
                }

            }

            System.exit(0);
        }

        if ("打开".equals(cmd)) {
            FileDialog fd = new FileDialog(jf, "打开文件");
            fd.setVisible(true);
            filePath = fd.getDirectory() + fd.getFile();

            BufferedReader br = null;

            try {
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(filePath), "utf-8"));
                
                String str;
                while((str=br.readLine())!=null){
                    
                    jta.append(str+"\n");
                    
                }
                
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if(br!=null){
                    try {
                        br.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            }
            wasSaved=true;
        }
        if ("保存".equals(cmd)) {
            if(filePath==null){
                FileDialog fd=new FileDialog(jf);
                fd.setVisible(true);
                filePath=fd.getDirectory()+fd.getFile();
            }
            
            save();
            wasSaved=true;
            
            
        }
        if ("另存为".equals(cmd)) {
            FileDialog fd=new FileDialog(jf);
            fd.setVisible(true);
            filePath=fd.getDirectory()+fd.getFile();
            save();
            wasSaved=true;
        }
    }