点击按钮1,显示Panel1,点击按钮2显示Panel2,一次类推,切按钮是用一个类装起来的,Panel1,用一个类装起来的Panel2也是用一个单独的类装起来的,Panel3也是!!
请问怎么实现!!愿意教我的,可以加我QQ,我把整个工程发给你,谢谢了!

解决方案 »

  1.   

    监听; 改变panel; 刷新 
      

  2.   

    我是用Remove(),后再添加一个新的Panel进去但是不行,出来之后前面的那个Panel被删除了,但是后来加进去的那个Panel却没有出来!!就出现个白的,而且重新出来了一个新的框架!!
      

  3.   

    怎么刷新!!
    加我QQ好吗 QQ:920132
      

  4.   

    没有把顶级容器可视化,你remove的后,把新的panel加进去后,加一句,this.setVisible(true)
      

  5.   

    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    public class TestPanel extends JFrame implements ActionListener { /**
     * 
     */
    private static final long serialVersionUID = 1L;
    /**
     * @param args
     */
    private JButton button1,button2,button3;
    private JPanel panel1,panel2,panel3,buttonpanel;
    private Container container;
    public TestPanel(){
    super("Test Panle!");
    button1=new JButton("button1");
    button2=new JButton("button2");
    button3=new JButton("button3");
    buttonpanel=new JPanel();
    buttonpanel.add(button1);
    buttonpanel.add(button2);
    buttonpanel.add(button3);
    button1.addActionListener(this);
    button2.addActionListener(this);
    button3.addActionListener(this);
    container=getContentPane();
    panel1=new JPanel();
    panel2=new JPanel();
    panel3=new JPanel();
    panel1.add(new JLabel("1"));
    panel2.add(new JLabel("2"));
    panel3.add(new JLabel("3"));
    container.add(buttonpanel,BorderLayout.NORTH);
    setSize(300,300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new TestPanel();
    }
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource()==button1){
    container.add(panel1,BorderLayout.CENTER);
    setVisible(true);
    }
    if(e.getSource()==button2){
    container.add(panel2,BorderLayout.CENTER);
    setVisible(true);
    }
    if(e.getSource()==button3){
    container.add(panel3,BorderLayout.CENTER);
    setVisible(true);
    }
    }}
      

  6.   


    unexcepted side effect
      

  7.   

    你这样的情况建议你的主面板使用java.awt.CardLayout
    然后把那三个Panel加进去,要给组件一个名字哦,
    保留CardLayout的引用,
    要翻转的时候使用
    CardLayout.show(Container parent, String name) 
    里面的parent就是你的主面板了,name就是你要翻转到的Panel的名字
      

  8.   

    其实这个问题还是蛮容易解决的。用Remove()这种方法,可以解决问题但是只是便面解决,而且对代码的再次使用很难最好的解决就是setvisible,这样运行起来又快而且不用加载的,不过占用内存的开支比较大