为什么当JFrame设置了setSize()属性,程序运行时JLabel并不显示,当拖动JFrame使其改变大小时JLabel才会显示.
    而当JFrame不设置setSize()属性,而用pack(),程序一运行就可以看到jlabel中的内容.还请各位指教,谢谢!
(示例程序如下)import javax.swing.*;
public class test extends JFrame{
 JLabel label = null;
 public test(){  
 label = new JLabel("Helloret",JLabel.CENTER);
 setSize(300,200);
 setVisible(true);
 getContentPane().add(label);
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
     public static void main(String[] args){
     new test();
     }
}

解决方案 »

  1.   

    你的窗体没有设置layout啊 默认是flowlayout 你可以设置为borderLayout 然后将label显示在中间 :BorderLayout borderLayout1 = new BorderLayout();
    this.getContentPane().setLayout(borderLayout1);
    //
    this.getContentPane().add(label, java.awt.BorderLayout.CENTER);
      

  2.   

    谢谢 smyl9989(真我的风采)!!    我设过了,但问题还是存在,郁闷啊 :(
      

  3.   

    将getContentPane().add(label);放在setVisible(true);之前
    或者在最后加上this.validate(),this.repaint();
      

  4.   

    谢谢Sprite_bei()!!
       我也试过了,还是不行!
      

  5.   

    实列一个面板contentPane
    contentPane = this.getContentPane()
    contentPane.setLayout(null);
    contentPane.add(label);