你让Frame公用,而当点panel1加入panel1,panel2加入panel2

解决方案 »

  1.   

    将不显示的pane2设为不可见,pane2.setVisible(false); 。需要的时候再将pane2其设成 true ,pane1设成false,然后重新布局就OK拉,我在做back or next时就是这样做的。import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Test extends JFrame {
      JMenuBar menuBar;
      JMenu menu1,menu2,menu3;
      JMenuItem menuItem1,menuItem2;
      JPanel pane,pane1,pane2;
      int i;  public Test() {
        jbInit();
      }
      public void jbInit(){
        menuBar = new JMenuBar();
        menu1 = new JMenu("菜单");
        menu2 = new JMenu("随便");
        menu3 = new JMenu("随便");
        menuItem1 = new JMenuItem("pane1");
        menuItem2 = new JMenuItem("pane2");
        pane = new JPanel();
        pane1 = new JPanel();
        pane2 = new JPanel();
        this.addWindowListener(new WindowAdapter(){
          public void windowClosing(WindowEvent e){
            System.exit(0);
          }
        });
        menuItem1.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            menuItem1_actionPerformed(e);
          }
        });
        menuItem2.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            menuItem1_actionPerformed(e);
          }
        });
        this.getContentPane().add(menuBar, BorderLayout.NORTH);
        this.getContentPane().add(pane, BorderLayout.CENTER);
        pane.add(pane1);
        pane.add(pane2);
        pane1.setVisible(true);
        pane2.setVisible(false);
        menuBar.add(menu1, null);
        menuBar.add(menu2, null);
        menuBar.add(menu3, null);
        menu1.add(menuItem1);
        menu1.add(menuItem2);
        pane1.add(new JLabel("Pane1"), null);
        pane2.add(new JLabel("pane2"), null);
        this.setSize(300,200);
        this.setVisible(true);
      }  public static void main(String[] args) {
        new Test();
      }  void menuItem1_actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("pane1")){
          pane1.setVisible(true);
          pane2.setVisible(false);
          pane.invalidate();
          pane.validate();
        }
        if(e.getActionCommand().equals("pane2")){
          pane2.setVisible(true);
          pane1.setVisible(false);
          pane.invalidate();
          pane.validate();
        }
      }
    }
      

  2.   

    将不显示的pane2设为不可见,pane2.setVisible(false); 。需要的时候再将pane2其设成 true ,pane1设成false,然后重新布局就OK拉,我在做back or next时就是这样做的。
    不错
      

  3.   

    我这样做了,但是没办法实现,因为其中一个pane中有一个JScrollPane(textarea).
      

  4.   

    而且我的两个JPanel都是在一个窗口的BorderLayou.CENTER!
      

  5.   

    把代码发给我,我晚上帮你看看[email protected]