请各位大哥帮看下下面的代码,我想remove掉原来的一个jpanel,然后在在它的位置上显示另一个jpanel,不知道这段代码为什么无法实现呢?帮帮忙,谢谢import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Frame1
    extends JFrame {
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel jPanel1 = new JPanel();
  JPanel jPanel2 = new JPanel();
  JButton jButton1 = new JButton();
  JTextField jTextField1 = new JTextField();  public Frame1() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void jbInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(borderLayout1);
    setSize(new Dimension(400, 300));
    setTitle("Frame Title");
    jPanel1.setBorder(BorderFactory.createEtchedBorder());
    jPanel2.setBorder(BorderFactory.createEtchedBorder());
    jButton1.setText("测试");
    jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
    jTextField1.setText("jTextField1");
    contentPane.add(jPanel1, java.awt.BorderLayout.NORTH);
    jPanel1.add(jButton1);
    contentPane.add(jPanel2, java.awt.BorderLayout.WEST);
    jPanel2.add(jTextField1);
  }  public void jButton1_actionPerformed(ActionEvent e) {
     panel p=new panel();
     contentPane.remove(jPanel2);
     contentPane.add(p, java.awt.BorderLayout.WEST);
     this.show();
  }
}class Frame1_jButton1_actionAdapter
    implements ActionListener {
  private Frame1 adaptee;
  Frame1_jButton1_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}

解决方案 »

  1.   

    下面规范了一下,麻烦再给看下
    =================================
    import  java.awt.*;  
    import  javax.swing.*;  
    import  java.awt.event.ActionEvent;  
    import  java.awt.event.ActionListener;  public  class  TESTFrame  
           extends  JFrame  {  
       JPanel  contentPane;  
       BorderLayout  borderLayout1  =  new  BorderLayout();  
       JPanel  NORTHPanel  =  new  JPanel();  
       JPanel WESTPanel =  new  JPanel();  
       JButton cmdTest =  new  JButton();  
       JTextField tempTextField =  new  JTextField();     public  TESTFrame()  {  
           try  {  
               setDefaultCloseOperation(EXIT_ON_CLOSE);  
               jbInit();  
           }  
           catch  (Exception  exception)  {  
               exception.printStackTrace();  
           }  
       }     /**  
         *  Component  initialization.  
         *  
         *  @throws  java.lang.Exception  
         */  
       private  void  jbInit()  throws  Exception  {  
           contentPane  =  (JPanel)  getContentPane();  
           contentPane.setLayout(borderLayout1);  
           setSize(new  Dimension(400,  300));  
           setTitle("Frame  Title");  
           NORTHPanel.setBorder(BorderFactory.createEtchedBorder());
        WESTPanel.setBorder(BorderFactory.createEtchedBorder());
        cmdTest.setText("测试");
        cmdTest.addActionListener(new  Frame1_jButton1_actionAdapter(this));
        tempTextField.setText("");  
           contentPane.add(NORTHPanel,  java.awt.BorderLayout.NORTH);  
           NORTHPanel.add(cmdTest);  
           contentPane.add(WESTPanel,  java.awt.BorderLayout.WEST);
        WESTPanel.add(tempTextField);  
       }     public  void  cmdTest_actionPerformed(ActionEvent  e)  {  
             panel  p=new  panel();        //新建一个panel对象
             contentPane.remove(WESTPanel);  //移除westpanel
             contentPane.add(p,  java.awt.BorderLayout.WEST); //加入新建的panel 
             this.show();  
       }  
    }  class  TESTFrame_cmdTest_actionAdapter  
           implements  ActionListener  {  
       private  TESTFrame  adaptee;  
       TESTFrame_cmdTest_actionAdapter(TESTFrame  adaptee)  {  
           this.adaptee  =  adaptee;  
       }     public  void  actionPerformed(ActionEvent  e)  {  
           adaptee.cmdTest_actionPerformed(e);  
       }  
    }
      

  2.   

    panel  p=new  panel();        
    panel什么东西
    不是JPanel?
      

  3.   

    我放在IDE里面 全是红点..貌似很多错误~~还是代码没贴全?
      

  4.   

    改了一下,lz的书比较老, 还在用show(), lz查一下api就明白了。
    在新的panel里加了一个label作标示。main, 在这里调用frame:
    ---------------------------------------
    public class Main {
        
        public static void main(String[] args) {
            TESTFrame t = new TESTFrame();
            t.setVisible(true);
        }
    }修改lz的TESTFrame:
    -----------------------------------------------------
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;public class TESTFrame extends JFrame {
        JPanel contentPane;
        BorderLayout borderLayout1 = new BorderLayout();
        JPanel NORTHPanel = new JPanel();
        JPanel WESTPanel = new JPanel();
        JButton cmdTest = new JButton();
        JTextField tempTextField = new JTextField();
        
        public TESTFrame() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }
        
        /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(borderLayout1);
            setSize(new Dimension(400, 300));
            setTitle("Frame Title");
            NORTHPanel.setBorder(BorderFactory.createEtchedBorder());
            WESTPanel.setBorder(BorderFactory.createEtchedBorder());
            
            cmdTest.setText("测试");//空些行, 代码看得清楚些
            cmdTest.addActionListener(new TESTFrame_cmdTest_actionAdapter());
            
            contentPane.add(NORTHPanel, java.awt.BorderLayout.NORTH);
            NORTHPanel.add(cmdTest);
            
            contentPane.add(WESTPanel, java.awt.BorderLayout.WEST);
            tempTextField.setText("eeeeeeee");
            WESTPanel.add(tempTextField);
        }
        class TESTFrame_cmdTest_actionAdapter implements ActionListener {
            public void actionPerformed(ActionEvent e) {
         
                JPanel p=new JPanel(); //新建一个panel对象
                JLabel label = new JLabel("new west");
                p.add(label);
                contentPane.remove(WESTPanel); //移除westpanel           
                contentPane.add(p, java.awt.BorderLayout.WEST); //加入新建的panel
                refresh();
            }     
            
        }
        private void refresh(){
            this.validate();
        }
        
        
    }