学java一个月了 最近开始做项目 碰到一个问题 求助各位大大们在JFrame这个顶层容器中 添加一个面板 容器布局是边界布局 比如一个面板添加在中间 另一个面板添加在北面在北面这个面板中加几个按钮 怎样实现点击不同按钮的时候中间的那个面板能够和自己预先在别的类里面写好的面板互相切换

解决方案 »

  1.   

    掌握两个互换面板的引用,比方说pan1和pan2
    点击事件中,
    frame.remove(pan1);
    frame.add(pan2, BorderLayout.center);
    这样pan1就被换成pan2了。
      

  2.   

    把要出现的面板的setVisible()写在button的监听方法里面就可以了。
      

  3.   

    cardlayout 不就是做这种事的
      

  4.   

    cardlayou我没有学过 怎么用?还有没有另外的方法能实现?
      

  5.   

    空谈无益,看代码public class Panels extends JFrame{
    public static void main(String[] args) {
    final JFrame frame = new JFrame("面板切换");
    frame.setSize(300, 400);
    frame.setLayout(new BorderLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel controls = new JPanel();
    frame.add(controls, BorderLayout.NORTH);
    final JPanel green = new JPanel();
    green.setBackground(Color.green);
    frame.add(green, BorderLayout.CENTER);
    final JPanel black = new JPanel();
    black.setBackground(Color.black);
    final JPanel red = new JPanel();
    red.setBackground(Color.red);
    JButton toBlack = new JButton("to black");
    toBlack.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
    frame.remove(green);
    frame.remove(red);
    frame.add(black, BorderLayout.CENTER);
    frame.validate();
    frame.repaint();
    }
    });
    controls.add(toBlack);
    JButton toRed = new JButton("to red");
    toRed.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
    frame.remove(green);
    frame.remove(black);
    frame.add(red, BorderLayout.CENTER);
    frame.validate();
    frame.repaint();
    }
    });
    controls.add(toRed);
    frame.setVisible(true);
    }
    }
      

  6.   

    CardLayout layout = new CardLayout();
    JPanel container = new JPanel(layout);
    container.add(bluePanel,"BLUE");
    container.add(greenPanel,"GREEN");
    container.add(redPanel,"RED");public void actionPerformed(ActionEvent e){
        layout.show(container,"BLUE"); // 显示蓝色面板
        // layout.show(container,"GREEN"); //  绿色
    }