布局管理
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):采用指定行数列数,指定横向间距,纵向间距将容器分割成多个网格
浙公网安备 33010602011771号