AWT提供了五个常用的布局管理器,FlowLayout,BorderLayout,GridLayout,GridBigLayout,CardLayout
Swing还提供了一个BoxLayout布局管理器。
1.FlowLayout布局管理器
在这个布局管理器中,组建像流水一样想某方向流动(排列),遇到障碍(边界)就折回,重头开始排列,默认情况,FlowLayout布局管理器从左向右排列所有组件,遇到边界就会折回iayihang重新开始。
package test1; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; public class TestFlowLayout { public static void main(String[] args) { Frame f = new Frame("FlowLayout-Test"); f.setLayout(new FlowLayout()); for (int i = 0; i < 100; i++) { f.add(new Button("按钮" + i)); } f.pack(); f.setVisible(true); new TestListener().init(); } }
结果:Fram中的按钮可以随着拖动窗体的大小而进行流水排列。
2.BorderLayout布局管理器
BorderLayout将容器分为EAST,SOUTH,WEST,NORTH,CENTER
NORTH
WEST CENTER EAST
SOUTH
注意:
1.使用BorderLayout时,需要指定要添加到那个区域,如果没有指定的话,则默认添加到中间
2.如果向同一区域添加多个组建时,后放入的组建会覆盖前面的组件
3.BorderLayout();使用默认水平间距、垂直间距创建BorderLayout布局管理器
4.BorderLayout(Integerhgap,int vgap):使用指定的水平间距,垂直间距创建BorderLayout布局管理器
package test1; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.Panel; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MultiListener { private Frame f = new Frame("测试"); private TextArea ta = new TextArea(6, 40); private Button b1 = new Button("按钮一"); private Button b2 = new Button("按钮二"); public void init() { FristListener f1 = new FristListener(); b1.addActionListener(f1); b1.addActionListener(new SecondListener()); b2.addActionListener(f1); f.add(ta); Panel p = new Panel(); p.add(b1); p.add(b2); f.add(p, BorderLayout.SOUTH); f.pack(); f.setVisible(true); } class FristListener implements ActionListener { public void actionPerFormed(ActionEvent e) { ta.append("第一个事件监听器被出发,事件源是:" + e.getActionCommand() + "\n"); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } class SecondListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub ta.append(""); } } public static void main(String[] args) { new MultiListener().init(); } }
3.GridLayout布局管理器
是将容器分割成纵横线分割的网格,每个网格所占的区域大小相同,当向使用GridLayout的同期中添加组件时,默认从左向右,总上向下添加到每个网格中,与FlowLayout不同的是,放在GrideLayout布局管理中的各组件的大小组件所处理的区域来决定。
每个组件将自动涨大到占满整个区域。
1.GridLayout(int rows,int cols):采用指定行数、列数、指定横向间距,纵向间距将容器分割成多个网格
2.GridLayout(Int rows,int cols,int hgap,int vgap):采用指定行数列数,指定横向间距,纵向间距将容器分割成多个网格