我创建了一个框架,想在上面加一个JPanel p1,p1上加了两个JButton,把p1加到JFrame上后,怎么不显示p1呢??

解决方案 »

  1.   

    import java.awt.*;import javax.swing.*;
    public class K 
    {
    public JFrame frame = new JFrame("seal");
    public JPanel p1;
    public JPanel content;
    public JPanel p2;

    public JButton one;
    public JButton two;
    public ButtonGroup bg;

    public K()
    {
    try
    {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    init();

    }catch(Exception e)
    {}

    }
    public void init()
    {
    // content = (JPanel) getContentPane();
    frame.setSize(600,400);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height)
        {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width)
        {
          frameSize.width = screenSize.width;
        }
        frame.setLocation( (screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
    frame.setResizable(false);


    one = new JButton("A");
    two = new JButton("B");
    p1 = new JPanel();
    p1.setLayout(new FlowLayout());
    p1.add(one);
    p1.add(two);// p1.setSize(100,100);
    frame.add(p1);
    // content.add(p1);

    }

    public static void main(String[] args)
    {
    new K();
    }
      

  2.   

    // p1.setSize(100,100);
    frame.getContentPane().add(p1);
    frame.validate();
    // content.add(p1);改成这样就可以了
      

  3.   

    import java.awt.*;import javax.swing.*;
    public class K 
    {
    public JFrame frame = new JFrame("seal");
    public JPanel p1;
    public JPanel content;
    public JPanel p2;

    public JButton one;
    public JButton two;
    public ButtonGroup bg;

    public K()
    {
    try
    {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    init();

    }catch(Exception e)
    {}

    }
    public void init()
    {
    // content = (JPanel) getContentPane();
    frame.setSize(600,400);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height)
        {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width)
        {
          frameSize.width = screenSize.width;
        }
        frame.setLocation( (screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
     



    one = new JButton("A");
    two = new JButton("B");
    p1 = new JPanel();
    p1.setLayout(new FlowLayout());
    p1.add(one);
    p1.add(two);// p1.setSize(100,100);

                      //改变一下语句顺序就可以了
                      content.add(p1);
                      frame.setVisible(true);
    frame.setResizable(false);
    //

    }

    public static void main(String[] args)
    {
    new K();
    }
    }
      

  4.   

    public void validate()验证此容器及其所有子组件。 
    使用 validate 方法会使容器再次布置其子组件。已经布置容器后,在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。
      

  5.   

    content.add(p1);的作用是把p1添加到frame的面板上,如果放在frame.setVisible(true);之后,那执行frame.setVisible(true);的时候还没有p1,当然不会显示出来。