Java布局管理

  当一个窗口的组件比较多的时候,应该对该界面的组件进行合理布局,使其看起来整洁好看。
  Java采用布局管理器(Layout Manager) 对容器中的组件进行布局。
  布局是容器类的特性,每种容器都有默认的布局方式。 Window窗口类默认BorderLayout布局;Panel面板类默认FlowLayout布局。如果一个容器要改变布局方式,可以调用setLayout() 方法。
  Java提供了多种风格的布局管理器,这里介绍用得最多的三种。
1.流布局—FlowLayout
这种布局方式将组件从左到右、一行一行地放到容器中,当一行放满之后再在下一行按同样的方式放组件。当容器大小改变时,组件大小也相应变化。面板就是默认流布局。

class FlowLayout implements LayoutManager,Serializable

{
	public static final int LEFT = 0 , CENTER = 1 , RIGHT = 2;	//对其方式常量
	public FlowLayout();			//默认居中
	public FlowLayout(int align);	//指定对其方式,取值为对其方式常量
}

2.边布局—BorderLayout
BorderLayout将容器划分为东、西、南、北、中五个区域。组件占满一条边或中间部分。当容器大小改变时,四边的组件长度或宽度不变,中间组件的长度和宽度随容器大小改变而改变。
容器类中的add(Component aomp , Object constraints)方法仅用于BorderLayout布局,第二个参数默认为BorderLayout.CENTER.

  • 注意:采用边布局的话,后加入的组件会覆盖先前的组件,所以容器显示的是最后加入的组件。

下面看看具体的例子:

package cn.com;
import java.awt.BorderLayout;
import java.awt.Button;
import javax.swing.JFrame;

public class MyBorderLayout extends JFrame
{
	public static void main(String args[])
	{
		MyBorderLayout win = new MyBorderLayout();
		win.setSize(500, 300);
		win.setTitle("边布局容器");			
	}
	public MyBorderLayout()
	{
		init();
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	void init()
	{
		setLayout(new BorderLayout());		//设置为边布局---该局也可以注释掉,因为默认就是边布局
		//添加组件
		this.add(new Button("北") , BorderLayout.NORTH);
		this.add(new Button("南") , BorderLayout.SOUTH);
		this.add(new Button("西") , BorderLayout.WEST);
		this.add(new Button("东") , BorderLayout.EAST);
		this.add(new Button("中"));
	}	
}

效果如下
在这里插入图片描述
3.网格布局—GridLayout
GridLayout将容器划分为大小相等的若干行若干列的表格,它按照从第一行开始,左到右的顺序加入组件。一行放满之后再从下一行开始,每个组件占满一格。若果组件个数超过网格数量,则布局管理器会自动添加一行网格。(添加原则是:保持行数不变;反之,一些网格置空)。

构造函数:
GridLayout() //一行一列
GridLayout(int rows, int cols) //指定行列数
GridLayout(int rows, int cols, int hgap, int vgap)//hgap 水平间距, vgap垂直间距

package cn.com;

import java.awt.Button;
import java.awt.GridLayout;
import javax.swing.JFrame;

public class MyGridLayout extends JFrame
{
	public MyGridLayout()
	{
		init();
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	void init()
	{
		this.setLayout(new GridLayout(4,4)); 	//将布局设置为4*4的网格
		String str[] = {"7","8","9","/", "4","5","6","=", "1","2","3","-", "0",".","=","+"};
		//添加组件
		for (int i=0 ; i<str.length ; i++)
			this.add(new Button(str[i]));
	}
	
	public static void main(String[] args) 
	{
		MyGridLayout win = new MyGridLayout();
		win.setSize(500, 300);
		win.setTitle("网格布局容器");
	}
}

在这里插入图片描述

  当然想要进行更加复杂的布局,可以使用面板(中间容器),对每个面板进行合理布局,然后将各个面板添加到同一个顶层容器中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值