在一个窗体中,我在JFrame里想加入三个面板,分别是panel1,panel2,panel3,其中panel1和panel3我直加加入jframe,但对于panel2,我想创建一个类,然后调用,于是我
创建了一个class panel2 extends JPanel{
public void panel2(){
}
}
接着我再加入jframe时用的是add(panel1);
                          add(panel3);
                          panel2 p=new panel2();
                          add(p);
但结果是panel1和panel3能在jframe中显示出来,而panel2显示不出来,我想可能是因为调用类的时候出错,请大侠指点,非常感谢

解决方案 »

  1.   

    你为什么要扩展JPANEL,直接NEW一个添加进去
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    public class Jframe extends JFrame{
    JPanel p1,p2;
    public static void main(String args[]){
    new Jframe();
    }
    public Jframe(){
    super("Panel");
    Container con=this.getContentPane(); Panel2 pl=new Panel2();
    p1=new JPanel();p1.setBackground(Color.red);
    p2=new JPanel();p2.setBackground(Color.green);
    con.add(p1,BorderLayout.EAST);
    con.add(p2,BorderLayout.WEST);
    con.add(pl,BorderLayout.CENTER);
    setSize(300,300);
    setVisible(true);
    }
    }
    class Panel2 extends JPanel{
    public Panel2(){
    this.setBackground(Color.blue);
    }
    }LZ看看,要的是不是这个效果。呵呵。
      

  3.   

    对了,在构造方法里加一句:setDefaultCloseOperation(EXIT_ON_CLOSE);
      

  4.   

    我试验了一下,没什么问题啊public class Test {
    public static void main(String[] args) {
    JFrame jf = new JFrame();
    Panel pl = new Panel();
    Pan p = new Pan();
    JButton jb = new JButton("下");
    JButton jbl = new JButton("上");
    p.add(jb);
    pl.add(jbl);
    jf.add(p, BorderLayout.SOUTH);
    jf.add(pl, BorderLayout.NORTH);
    jf.setSize(400, 600);
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setVisible(true);
    }
    }
    class Pan extends JPanel {
    }
      

  5.   

    可能是被另外两个panel盖住了。用布局管理器试试。另外我刚试了一下,不加背景色的话panel看不出来。
      

  6.   

    创建了一个class panel2 extends JPanel{
    public void panel2(){
    }

    这里的public void panel2()应该要用构造方法吧。
      

  7.   

    import java.awt.BorderLayout;
    import java.awt.Panel;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;public class Test {
        public static void main(String[] args) {
            JFrame jf = new JFrame();
            Panel pl = new Panel();
            Pan p = new Pan();
            JButton jb = new JButton("下");
            JButton jbl = new JButton("上");
            p.add(jb);
            pl.add(jbl);
            jf.add(p, BorderLayout.SOUTH);
            jf.add(pl, BorderLayout.NORTH);
            jf.setSize(400, 600);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jf.setVisible(true);
        }
    }
    class Pan extends JPanel {
    public void Pan(){
    JLabel label=new JLabel("欢迎光临");
    add(label);
    }
    }为什么我再下面加了标签后显示不出来呢,如果Pan类里有东西怎样能使它显示呢???
      

  8.   


    class Pan extends JPanel {
        public void Pan(){
            JLabel label=new JLabel("欢迎光临");
            add(label);
        }
    }把void去掉。
      

  9.   

    去掉void才是构造方法,构造方法里自动调用父类(JPanel)的构造方法。