布局管理

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):采用指定行数列数,指定横向间距,纵向间距将容器分割成多个网格

 

 

posted on 2011-12-18 09:52  wangbokun  阅读(261)  评论(0编辑  收藏  举报

导航