写了两个JPanel的子类,两个子类分别绘制了面板
用子类1创建panel1
用子类2创建panel2
把panel2贴到panel1上 -- panel1.add(panel2);
把panel1贴到窗口上 -- frame.getContentPane().add(panel1);
但是实际效果只有panel1,没有看到贴到panel1上的panel2,请问是怎么回事?

解决方案 »

  1.   

    panel2在添加到panel1的時候也要加到ContentPane上~
      

  2.   

    迷糊了   我試了下  可以了   你看看   
    只是個例子 
    public class Test2 {
    public static void main(String[] args) {
    JFrame jf = new JFrame();
    JLabel jl = new JLabel();
    jl.setText("**************");
    jl.setOpaque(true);
    jl.setBackground(Color.YELLOW);
    jl.setBounds(new Rectangle(50,50,100,20));
    JPanel jp1 = new JPanel();
    jp1.setBounds(new Rectangle(50,80,100,50));
    //jp1.add(new JButton("456"));
    JPanel jp2 = new JPanel();
    jp2.add(new JButton("123"));
    //jp2.setVisible(true);
    jp1.add(jp2);
    jf.add(jp1);
    JButton jb = new JButton("sdfsdf");
    jb.setBounds(new Rectangle(50,150,100,20));
    jf.add(jb);
    //Container cp = jf.getContentPane();
    jf.setLayout(null);
        jf.add(jl);

    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setSize(400,400);
    jf.setLocationRelativeTo(null);
    jf.setVisible(true);

    }
    }
      

  3.   

    你那个貌似可以
    不过我是用Graphics绘制的面板,给你看下代码
    public class Main {
        public static void main(String[] args) {
            // TODO code application logic here
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setResizable(true);
            frame.setBackground(Color.BLACK);
            backframe back = new backframe();
            centerpanel center = new centerpanel();
            back.add(center);
            frame.getContentPane().add(back);
            frame.pack();
            frame.setVisible(true);
        }
    }public class backframe extends JPanel{
        public backframe(){
            setPreferredSize(new Dimension(800,600));
        }
        public void paint(Graphics g){
            Image img = Toolkit.getDefaultToolkit().getImage("界面.jpg");
            g.drawImage(img,0,0,this);
        }
    }
    public class centerpanel extends JPanel{
        public centerpanel(){
            setPreferredSize(new Dimension(281,500));
        }
        public void paint(Graphics g){
            Image img = Toolkit.getDefaultToolkit().getImage("center.png");
            g.drawImage(img,0,0,this);
        }
    }
      

  4.   

    你的panel1没有设置layout,而panel2又没有设置大小
    这样当然看不到了
    还有,要想看到,还必须要对panel2加上颜色,不然也看不到的--------------------------
    来上海吧
    http://topic.csdn.net/u/20080429/18/2ef7e7f7-7a00-4838-b4a7-ed8104b756ed.html?seed=1556996959