流布局

FlowLayout(流式布局)

使用FlowLayout布局方式的容器中组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满(即组件超过容器宽度后)到下一行开始继续排列。

1、流式布局特征如下:

1)组件按照设置的对齐方式进行排列

不管对齐方式如何,组件均按照从左到右的方式进行排列,一行排满,转到下一行。(比如按照右对齐排列,第一个组件在第一行最右边,添加第二个组件时,第一个组件向左平移,第二个组件变成该行最右边的组件,这就是从左向右方式进行排列)

 

2、流式布局FlowLayout类的常用构造函数和方法

构造函数

名称 用途
FlowLayout()     构造一个新的 FlowLayout,它是默认居中对齐的,默认的水平和垂直间隙是5个像素
FlowLayout(int align)

构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个像素

五个参数值及含义如下:

0或FlowLayout.lEFT ,控件左对齐

1或FlowLayout.CENTER ,居中对齐

2或FlowLayout.RIGHT ,右对齐

3或FlowLayout.LEADING,控件与容器方向开始边对应

4或FlowLayout.TRAILING,控件与容器方向结束边对应

如果是0、1、2、3、4之外的整数,则为左对齐

FlowLayout(int align, int hgap, int vgap)      创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙。
方法

名称 用途
Void setAlignment(int align) 设置此布局的对齐方式

void setHgap(int hgap)
设置组件之间以及组件与 Container 的边之间的水平间隙。
void setVgap(int vgap) 设置组件之间以及组件与 Container 的边之间的垂直间隙


代码实例:

package ch9;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FlowLayoutTest extends JFrame implements ActionListener   //继承自JFrame,并实现监听器接口
{
    private JPanel jp = new JPanel();    //创建JPanel对象
    JButton left = new JButton("向左对齐");    
    JButton center = new JButton("居中对齐");
    JButton right = new JButton("向右对齐");
    JButton leading = new JButton("向开始边对齐");
    JButton trailing = new JButton("向结束边对齐");
    private JButton [] jb = new JButton[]{left,center,right,leading,trailing};
    private FlowLayout  fl = new FlowLayout();//创建流布局管理器对象    
	public FlowLayoutTest()
	{
		jp.setLayout(fl);   //设置JPanel的布局管理器
		for(int i=0;i<jb.length;i++)
		{
			jp.add(jb[i]);
			jb[i].addActionListener(this);  //依次添加按钮到JPanel,并注册监听器
		}
		this.add(jp);
		this.setTitle("流布局动态设置");
		this.setBounds(200,200,500,150);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public void actionPerformed(ActionEvent a)    //实现监听器中的方法
	{
		for(int i=0;i<jb.length;i++)     //扫描按钮数组,判断按下的是哪个按钮
		{
			if(a.getSource()==jb[i])     //使用getSource()方法判断事件源
			{
				fl.setAlignment(FlowLayout.LEFT + i);  //根据按下的按钮来设置布局管理器的对齐方式
				jp.revalidate();  //刷新JPanel
			}
		}
	}
	public static void main(String args[])
	{
		new FlowLayoutTest();  //创建流布局窗口体对象
	}
}




你可能感兴趣的:(流布局)