代码一直出现loginMenu cannot be resolved to a variable
package examch1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import examch1.mygui.*;
public class TestFrame extends JFrame {//主框架容器
private static JDesktopPane theDesktop;
JMenuItem loginItem,exitItem,helpItem;//"登录"、"退出"和"帮助内容"菜单项
JMenuItem item[]=new JMenuItem[2];//"人事管理科目"菜单的2个菜单项
final String itemString[]={"部门管理","人员管理"};
final JPanel itemPanel[]={
new MyPanelDepartment("empsal","dep"),
new MyPanelEmp("empsal","emp"),
};
public TestFrame() {
super("人事管理系统"); //主框架标题
//1."登录"菜单:有两个菜单项--"登录"和"退出"
setTitle("登录窗口"); //设置标题
setLayout(null); //设置绝对布局
Container c = getContentPane(); //定义一个容器
final JTextField jtf1 = new JTextField(); //用户名文本框
final JPasswordField jpf1 = new JPasswordField(); //密码文本框
JLabel jl1 = new JLabel("用户名:"); //“用户名”标签
JLabel jl2 = new JLabel("密码:"); //“密码:”标签
jpf1.setEchoChar('*'); //设置密码字符为*
JButton jb1 = new JButton("确定"); //“确定”按钮
JButton jb2 = new JButton("取消"); //“取消”按钮
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String name = jtf1.getText().trim();
String psw = new String(jpf1.getPassword());
if (jtf1.getText().trim().length() == 0 || new String(jpf1.getPassword()).trim().length() == 0) {
JOptionPane.showMessageDialog(null, "不能为空!");
}
else
JOptionPane.showMessageDialog(null, "用户名:" + name + "\n密码:" + psw);
}
});
jb2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i = JOptionPane.showConfirmDialog(null, "你确定要退出本系统吗?");
if (i == 0) {
System.exit(0);
}
}
});
//2."人事管理科目"菜单:库中的每个表对应一个菜单项,实现添、删、改、查;"生成报表"菜单项
JMenu adminMenu = new JMenu("人事管理科目");
for(int i=0;i<item.length;i++)
item[i]=builedAdminMenuItem(adminMenu,itemString[i],itemPanel[i]);
//3."帮助"菜单
JMenu helpMenu = new JMenu("帮助");
JMenuItem helpItem = new JMenuItem("帮助内容");
helpMenu.add(helpItem);
helpItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(TestFrame.this, "运行程序后,看相应的代码");
}
});
//4.创建菜单条,添加菜单
JMenuBar bar = new JMenuBar();
setJMenuBar(bar);
bar.add(loginMenu);
bar.add(adminMenu);
bar.add(helpMenu);
//5.窗口中间放置桌面面板,用来显示内部窗口
theDesktop = new JDesktopPane();
getContentPane().add(theDesktop,BorderLayout.CENTER);
setSize(800, 600);
setVisible(true);
}
//创建菜单项的通用方法:参数menu是菜单项所添加在其上的菜单;
//参数itemName是菜单项的名字,因其在匿名内部类对象中引用,必须声明为final;
//参数panel是点击菜单项后所生成的内部窗口中的面板对象,必须声明为final。
private JMenuItem builedAdminMenuItem(JMenu menu,final String itemName,final JPanel panel){
final JMenuItem menuItem = new JMenuItem(itemName);
menu.add(menuItem);
menuItem.setEnabled(false);
menuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
buildInternalFrame(panel,itemName,menuItem);//生成内部窗口
}
});
return menuItem;
}
//生成内部窗口:窗口中间放置面板对象。参数item是与内部窗口相关的菜单项。
private void buildInternalFrame(JPanel panel,String title,final JMenuItem item) {
JInternalFrame frame = new JInternalFrame(title,true,true,true,true);//内部窗口
frame.addInternalFrameListener(new InternalFrameAdapter(){//内部窗口监听:关闭后执行
public void internalFrameClosed(InternalFrameEvent e) {
item.setEnabled(true);//关闭内部窗口时,菜单项item可用。
}
});
Container container = frame.getContentPane();//内部窗口容器面板
container.add(panel, BorderLayout.CENTER);//参数面板panel放在容器中间
frame.setSize(600,480);
theDesktop.add(frame);//内部窗口添加到桌面面板才能显示
frame.setVisible(true);
item.setEnabled(false);//生成内部窗口后,与之相关的菜单项item不可用。
}
//测试TestFrame类
public static void main(String[] args) {
JFrame frame = new TestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
相似问题