我坐了一个菜单类: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) { }
}}

解决方案 »

  1.   

    jmb.getParent().getParent().getParent()可获得该菜单栏所在的JFrame对象。
    我觉得更好的办法是在Menu类中新增加一个成员,用于标识该菜单栏所属的窗口。
      

  2.   

    恩,看语法应该可以,但是你说的标识又是怎么弄呢,本人刚学java很多东西自己摸索头都大了
    刚刚我把代码又改了下,没办法只好把menu组件全放主界面文件里了,功能是可以实现了,用了卡片布局,响应菜单事件,但是java的类意义啊! 糟践了,郁闷
      

  3.   

    我也是新手。感觉swing就是处理事件相当麻烦……,尤其是组件很多的情况。