你先设大小,然后再设置布局管理器,对比一下我修改过以后的程序就知道了
import javax.swing.*;
import java.awt.*;
public class ClassA extends JFrame
{
       
       public ClassA()
      {
      
       this.setTitle("Login"); //set the title
      
setSize(450,400);
JPanel panel=new JPanel();
  panel.setLayout(new GridBagLayout());
  GridBagConstraints gbCons=new GridBagConstraints();

//place the components on the frame
gbCons.gridx=0;
gbCons.gridy=0;
gbCons.anchor=GridBagConstraints.EAST;
JLabel lblUserName=new JLabel("Enter Username ");
panel.add(lblUserName, gbCons); getContentPane().add(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);

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

解决方案 »

  1.   

    关于这个问题不知道是否是java本身的bug。
    如果你的类是直接继承JFrame后来显示的。那么可能出现显示不正常的问题。用this.show()可以解决问题。
    但如果你的类,比如你的类继承了JPanel,然后在类里面定义一个JFrame变量,通过这个JFrame变量来显示窗口的话,即使你不用show()方法也是可以正常显示的。
      

  2.   

    setVisable应该放在你所有操作界面的语句之后,这其中有个次序问题。我也遇到过类似问题。