布局管理器:实现使用不同方式排列界面上的组件。
布局管理器接口LayoutManager
使用布局管理器时,布局管理器负责各个组件大小与位置,用户无法设置组件大小与位置属性。如果使用,会被布局管理器覆盖。
如果确实需要设置组件大小与位置,应取消该容器的布局管理器。(setLayout(null))
使用setLayout()方法指定布局管理器
实现接口的类:
FlowLayout:流水型,由左到右,一行排满后换行。
Panel类默认布局管理器,默认居中。
构造方法
FlowLayout()
构造一个新的 FlowLayout
,它是居中对齐的,默认的水平和垂直间隙是 5 个单位。
FlowLayout(int align)
构造一个新的 FlowLayout
,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位。
FlowLayout(int align, int hgap, int vgap)
创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。
/** * FlowLayout实例 * 2014-4-20 */ import java.awt.Button; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Frame; /** * * @author Administrator * */ public class flowLayoutDemo2 { /** * @param args */ public static void main(String[] args) { Frame f=new Frame(); //FlowLayout fl=new FlowLayout(FlowLayout.CENTER,20,40); f.setBackground(Color.GREEN); f.setLocation(200,200); f.setSize(400,400); f.setTitle(null); f.setVisible(true); f.setResizable(true); //f.setLayout(fl); f.setLayout(new FlowLayout(FlowLayout.CENTER,20,40)); for(int i=0;i<5;i++) f.add(new Button()); } }
BorderLayout:划分为东,西,南,北,中。每个区域只能加入一个组件,如果不指定,组件的加入部位,则默认加入中部
Frame类的默认布局管理器
向容器中加入组件的方法
public Component add( Component comp, int index)
- 将指定组件添加到此容器的给定位置上。
构造方法:
BordLayout()
构造一个组件之间没有间距的新边框布局。
BordLayout
(int hgap, int vgap)
构造一个具有指定组件间距的边框布局。
import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; public class BorderLayoutDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Frame f; f = new Frame("Border Layout"); Button bn = new Button("BN"); Button bs = new Button("BS"); Button bw = new Button("BW"); Button be = new Button("BE"); Button bc = new Button("BC"); f.setLayout(new BorderLayout(30,40)); f.add(bn, BorderLayout.NORTH); f.add(bs, BorderLayout.SOUTH); f.add(bw, BorderLayout.WEST); f.add(be, BorderLayout.EAST); f.add(bc, BorderLayout.CENTER); f.setSize(200,200); f.setVisible(true); } }
GirdLayout:划分成规则的矩形网格,每个单元格区域大小相等,组件被添加到每个单元格中,先从左到右添满后换行
构造方法
GirdLayout()
创建具有默认值的网格布局,即每个组件占据一行一列。
GirdLayout
(int rows, int cols)
创建具有指定行数和列数的网格布局。
GirdLayout
(int rows, int cols, int hgap, int vgap)
创建具有指定行数和列数的网格布局。
import java.awt.Button; import java.awt.Frame; import java.awt.GridLayout; public class GirdLayoutDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Frame f = new Frame("GridLayout Example"); Button b1 = new Button("b1"); Button b2 = new Button("b2"); Button b3 = new Button("b3"); Button b4 = new Button("b4"); Button b5 = new Button("b5"); Button b6 = new Button("b6"); //三行两列 f.setLayout (new GridLayout(3,2)); f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); //f.pack(); f.setVisible(true); } }
参考资料:尚学堂马士兵视频教程。