我坐了一个菜单类:Menu.java一个主界面类:Manager.java两个个显示界面类:Index.java、Select.java开始我显示的是:Index.java然后我想通过菜单调用Select.java ,并把Index.java去掉,就是替换咯。所以我监听菜单类,想了很久没有结果想请给位帮下拉!!
下面是主界面类:Manager.java的一段主要代码,意思是网格布局将new Menu().jmb的菜单条添加到第一格,将new Index()第一次显示至第二格,之后问题来了,我要怎么监听菜单,触发使得new Select()添加到主界面里去。this.setLayout(new GridLayout(1,1));
this.setJMenuBar(new Menu().jmb);
this.getContentPane().add(new Index());
-----------下面是菜单类代码---
public class Menu extends JPanel implements ActionListener { JMenuBar jmb;
JMenu jm;
JMenu jm1S;
JMenuItem jm1S1; public Menu() {
jmb = new JMenuBar(); // 菜单条
jm = new JMenu("信息"); // 菜单
jm1S = new JMenu("查询");
jm1S1 = new JMenuItem("按姓名查询");
jm1S1.addActionListener(this);
jmb.add(jm);
jm.add(jm1S);
jm1S.add(jm1S1);
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == jm1S1) { }
}}
下面是主界面类:Manager.java的一段主要代码,意思是网格布局将new Menu().jmb的菜单条添加到第一格,将new Index()第一次显示至第二格,之后问题来了,我要怎么监听菜单,触发使得new Select()添加到主界面里去。this.setLayout(new GridLayout(1,1));
this.setJMenuBar(new Menu().jmb);
this.getContentPane().add(new Index());
-----------下面是菜单类代码---
public class Menu extends JPanel implements ActionListener { JMenuBar jmb;
JMenu jm;
JMenu jm1S;
JMenuItem jm1S1; public Menu() {
jmb = new JMenuBar(); // 菜单条
jm = new JMenu("信息"); // 菜单
jm1S = new JMenu("查询");
jm1S1 = new JMenuItem("按姓名查询");
jm1S1.addActionListener(this);
jmb.add(jm);
jm.add(jm1S);
jm1S.add(jm1S1);
} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == jm1S1) { }
}}
我觉得更好的办法是在Menu类中新增加一个成员,用于标识该菜单栏所属的窗口。
刚刚我把代码又改了下,没办法只好把menu组件全放主界面文件里了,功能是可以实现了,用了卡片布局,响应菜单事件,但是java的类意义啊! 糟践了,郁闷