想设计一个frame,每点击上面的一个菜单项就会出现相应的panel,如果仅仅是在panel中画图的话可以实现。但是我现在添加一个菜单项,点击它时出现一个带组件的panel,比如里面有TextField,Button等,当我点击button时相应相应的动作。
       现在的问题是:我用不同参数的panel构造函数来区分不同菜单项对应的panel,但是带组件的那个panel构造函数中,总不能正确添加所有组件,因为panel对象才能调用add,还有对应的button点击事件相应,因此很大一段代码添加进了frame中,很冗长。该如何解决?或是可不可以构造多个frame,添加到一个界面中?

解决方案 »

  1.   

    panel.setLayout(new CardLayout()\\c);
    panel.add(panel1.....panel10);
    c.show(...
    查看cardlayout
      

  2.   

    我觉得楼主的意思大概是这样的!就是说在frame中要尽少的写代码,我觉得可以这样!
    代码:
    aaa.java:
    class aaa extends JFrame{
    public aaa(){
    bbb panel1=new bbb();
    ccc panel2=new ccc();
    this.add(panel1);
    this.add(panel2);
    }
    aaa frame=new aaa();
    }
    bbb.java:
    class bbb extends JPanel{}这样可能稍微好看一点!
      

  3.   

    我觉得楼主的意思大概是这样的!就是说在frame中要尽少的写代码,我觉得可以这样!
    代码:
    aaa.java:
    class aaa extends JFrame{
    public aaa(){
    bbb panel1=new bbb();
    ccc panel2=new ccc();
    this.add(panel1);
    this.add(panel2);
    }
    aaa frame=new aaa();
    }
    bbb.java:
    class bbb extends JPanel{}这样可能稍微好看一点!
      

  4.   

    你是说把那个带组件的panel写到另外一个文件,然后在aaa.java中import?
    那在bbb.java中的panel里面可以有事件响应吗?actionPerformed
      

  5.   

    这个方法我试过,在button的事件处理中直接在主frame frame1中添加带有组件的frame2,然后设置主frame1为setVisual(FALSE),但是在显示完frame2后设置frame1为可见却不出现了。