终于搞好了,应该行的
我的源代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class showPanel extends JFrame implements ActionListener{
    JMenuBar menuBar=new JMenuBar();
    JMenu menu=new JMenu("设置");
    JMenuItem menuItem=new JMenuItem("显示");
    JPanel paneUp=new JPanel();
    JPanel paneDown=new JPanel();
    int count=0;
public showPanel(){
super("写字本");
    setBounds(300,250,400,300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    menu.add(menuItem);
    menuBar.add(menu);
    menuItem.addActionListener(this);
    BorderLayout border=new BorderLayout();
    paneUp.setBackground(Color.black);
    paneDown.setBackground(Color.red);
    paneDown.setVisible(false);
    getContentPane().add(paneUp,BorderLayout.CENTER);
    getContentPane().add(paneDown,BorderLayout.CENTER);
    this.setJMenuBar(menuBar);
    this.show();
}
public void actionPerformed(ActionEvent e){
Object obj=e.getSource();
if(obj==menuItem){
count++;
if(count%2==1){
paneDown.show();
            paneUp.setVisible(false);
}
        else if(count%2==0){
         paneDown.setVisible(false);
         paneUp.show();
        }
    }
}
public static void main(String args[]){
    showPanel sp=new showPanel();
    sp.show();
}
}大致是这样吧:)

解决方案 »

  1.   

    我试过了不行呀,只能看到红色的面板啊。是不是不能在BorderLayout.CENTER,添加两个面板。
    请问怎么删除BorderLayout.CENTER处的组件呢?
      

  2.   

    cq_pro(重庆制造) 的代码是正确的。
      

  3.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class showPanel extends JFrame implements ActionListener{
        JMenuBar menuBar=new JMenuBar();
        JMenu menu=new JMenu("ÉèÖÃ");
        JMenuItem menuItem=new JMenuItem("ÏÔʾ");
        JPanel paneUp=new JPanel();
        JPanel paneDown=new JPanel();
        int count=0;
    public showPanel(){
    super("д×Ö±¾");
        setBounds(300,250,400,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        menu.add(menuItem);
        menuBar.add(menu);
        menuItem.addActionListener(this);
        BorderLayout border=new BorderLayout();
        paneUp.setBackground(Color.green);
        paneDown.setBackground(Color.red);
        paneDown.setVisible(false);
        paneUp.setVisible(true);
        getContentPane().add(paneUp,BorderLayout.CENTER);
        this.setJMenuBar(menuBar);
        this.show();
    }
    public void actionPerformed(ActionEvent e){
    Object obj=e.getSource();
    if(obj==menuItem){
    count++;
    if(count%2==1){
    getContentPane().add(paneDown,BorderLayout.CENTER);
                paneUp.setVisible(false);
                paneDown.setVisible(true);
    }
            else if(count%2==0){
            
             getContentPane().add(paneUp,BorderLayout.CENTER);
             paneDown.setVisible(false);
             paneUp.setVisible(true);
            }
        }
    }
    public static void main(String args[]){
        showPanel sp=new showPanel();
        sp.show();
    }
    }这样将楼上的大侠程序改了一下

    getContentPane().add(paneUp,BorderLayout.CENTER);
    放在事件中
      

  4.   

    可以的,我已经试过了,不过最好把show()替换成setVisible(true)
      

  5.   

    我顺便问一下:paneUp.setBackground(Color.black);为什么不显示黑色,而是灰色?
    而paneDown.setBackground(Color.red);可以正确显示红色
      

  6.   

    因为paneUp应该还是没有被放在Panel上,所以当paneDown不显示的时候,显示的是Panel的默认灰色。
      

  7.   

    找本书,学一下CardLayout,看看它是否完美的满足了你的需求。
      

  8.   

    getContentPane().add(paneUp,BorderLayout.CENTER);
    请问一下怎么把这个paneUp,从BorderLayout.CENTER移走啊?
      

  9.   

    if(count%2==1){
    getContentPane().remove(paneUp);  /////////
    repaint();
    getContentPane().add(paneDown,BorderLayout.CENTER);
                //paneUp.setVisible(false);
                paneDown.setVisible(true);
    }
            else if(count%2==0){
             getContentPane().remove(paneDown); ////
             repaint();
             getContentPane().add(paneUp,BorderLayout.CENTER);
             //paneDown.setVisible(false);
             paneUp.setVisible(true);
            }
      

  10.   

    多谢大家的帮助,我最后用cardLayout实现了我的要求。用其他的方法总有问题,而且也不知道为什么,看来在Swing上也的下点功夫啊。好了,大家准备接分吧。
      

  11.   

    谁能解释一下为什么cq_pro(重庆制造)的方法会不显示paneUp,而把getContentPane().add放在MENU的点击事件里面就可以了?
      

  12.   

    getContentPane().add(PaneUp,Center)
    在同一个地方放置组件只能放一个,只认最后放的那一个,所以要在事件中不断地add
      

  13.   

    在同一个地方放置组件只能放一个,只认最后放的那一个,所以要在事件中不断地add。那为什么,还要把其他PaneUp、PaneDown中的一个setVisible(true)另一个setVisible(false)才可以呢。不然的话就有问题,他写的面板PaneUp、PaneDown比较简单可能看不出来。在我写的程序里就有问题啊。说明不是“同一个地方放置组件只能放一个,只认最后放的那一个”。