import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class BoxLayoutTest
{
public static void main(String[] args)
{
BoxLayoutFrame frame = new BoxLayoutFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class BoxLayoutFrame extends JFrame
{
public BoxLayoutFrame()
{
setTitle("箱式布局");
setSize(300,200);
Container con = getContentPane();
BoxLayoutPanel panel = new BoxLayoutPanel();
con.add(panel);
}
}
class BoxLayoutPanel extends JPanel
{
public JLabel lname,lpsd;
public JTextField fname;
public JPasswordField fpsd;
public JButton ok,cancel;
public BoxLayoutPanel()
{
BorderLayout layout = new BorderLayout();
setLayout(layout);
lname = new JLabel("用户名");
lpsd = new JLabel("密 码");
fname = new JTextField(10);
fname.setMaximumSize(fname.getPreferredSize());//最大尺寸等于完美尺寸
fpsd = new JPasswordField(10);
fpsd.setMaximumSize(fname.getPreferredSize());
ok = new JButton("确定");
cancel = new JButton("重置");
Box hbox1 = Box.createHorizontalBox();//水平
Box hbox2 = Box.createHorizontalBox();
Box hbox3 = Box.createHorizontalBox();
hbox1.add(lname);
hbox1.add(Box.createHorizontalStrut(50));//支撑柱
hbox1.add(fname);
hbox2.add(lpsd);
hbox2.add(Box.createRigidArea(new Dimension(50,20)));//固定区 20是箱子的大小
hbox2.add(fpsd);
hbox3.add(Box.createHorizontalStrut(48));
hbox3.add(ok);
hbox3.add(Box.createHorizontalGlue());//弹簧
hbox3.add(cancel);
hbox3.add(Box.createHorizontalStrut(48));
Box vbox = Box.createVerticalBox();//垂直
vbox.add(hbox1);
vbox.add(hbox2);
vbox.add(Box.createVerticalStrut(10));
vbox.add(hbox3);
add(vbox);
}
}