import java.awt.*;
import javax.swing.*;public class Layout extends JFrame{ void biuldConstraints(GridBagConstraints gbc,int gx,int gy,int gw,int gh,int wx,int wy){
gbc.gridx = gx;
gbc.gridy = gy;
gbc.gridwidth = gx;
gbc.gridheight = gh;
gbc.weightx = wx;
gbc.weighty = wy;


public Layout(){
super();
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
JPanel pane = new JPanel();
pane.setLayout(gridbag);

biuldConstraints(constraints,0,0,1,1,30,50);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.WEST;
//你在这儿把constraints.anchor设置为WEST,但后面添加JTextField时却没有改变,所以Label和JTextField才会重叠在一起。
JLabel lab1 = new JLabel("UserName");
gridbag.setConstraints(lab1,constraints);
pane.add(lab1);

biuldConstraints(constraints,1,0,1,1,70,0);
constraints.fill = GridBagConstraints.NONE;
//注意以下一行,为新添加的
constraints.anchor = GridBagConstraints.EAST;
JTextField text = new JTextField(10);
gridbag.setConstraints(text,constraints);
pane.add(text);

biuldConstraints(constraints,0,1,1,1,0,50);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.WEST;
JLabel lab2 = new JLabel("PassWord",JLabel.LEFT);
gridbag.setConstraints(lab2,constraints);
pane.add(lab2);

biuldConstraints(constraints,1,1,1,1,0,0);
constraints.fill = GridBagConstraints.NONE;
//注意以下一行,为新添加的
constraints.anchor = GridBagConstraints.EAST;
JPasswordField pwd = new JPasswordField(10);
gridbag.setConstraints(pwd,constraints);
pane.add(pwd);

setContentPane(pane);
}

public static void main(String[] arguments){
Layout layout = new Layout();
layout.show();
}
}