Java AWT编程 布局管理器(二)BorderLayout

BorderLayout将容器分为EAST(东)、SOUTH(南)、WEST(西)、NORTH(北)、CENTER(中) 5个区域,普通组件可以放置在这5个区域中的任意一个中。BorderLayout布局管理器的布局示意图如下。

当改变使用BorderLayout的容器大小时,SOUTH(南)、NORTH(北)和CENTER(中)区域水平调整,而EAST(东)、WEST(西)和CENTER(中)区域垂直调整。

使用BorderLayout需要注意两点:

1、当向使用BorderLayout布局管理器中添加组件时,需要制定要添加到哪个区域中,如果没有指定,则默认添加到中间区域。

2、如果向同一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。


Frame、Dialog、ScrollPane默认使用BorderLayout布局管理器,BorderLayout有以下两个构造器:

1. BorderLayout():使用默认的水平间距、垂直间距创建BorderLayout布局管理器。

2. BorderLayout(int hgap, int vgap):使用指定的水平间距、垂直间距创建BorderLayout布局管理器。

当向使用BorderLayout布局管理器的容器中添加组件时,应该使用BorderLayout类中的几个静态常量来制定添加到哪个区域中。BorderLayout有如下几个静态常量:EAST(东)、SOUTH(南)、WEST(西)、NORTH(北)、CENTER(中)。

/**
 * 程序示范了BorderLayout的用法
 */

package codes11;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;

public class BorderLayoutTest {

	public static void main(String[] args) {
		Frame f = new Frame("测试窗口");
		// 设置Frame容器使用BorderLayout布局管理器
		f.setLayout(new BorderLayout(30, 5));
		f.add(new Button("北"), BorderLayout.NORTH);
		f.add(new Button("南"), BorderLayout.SOUTH);
		// 默认添加到中间区域中
		f.add(new Button("中"));
		f.add(new Button("西"), BorderLayout.WEST);
		f.add(new Button("东"), BorderLayout.EAST);
		f.pack();
		f.setVisible(true);
	}

}

运行程序,结果如下图

当使用BorderLayout布局管理器时,每个区域的组件都会尽量去占据整个区域,所以中间的按钮比较大。

/**
 * 以下程序没有向WEST区域添加组件,但向CENTER区域添加了一个Panel容器,该Panel容器中包含了一个文本框和一个按钮。
 * 程序虽然没有向WEST区域添加组件,但窗口中依然有5个组件,因为CENTER区域添加的是Panel,而该Panel里包含了2个组件。
 */
package codes11;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextField;

public class BorderLayoutTest2 {

	public static void main(String[] args) {
		Frame f = new Frame("测试窗口");
		f.setLayout(new BorderLayout(30, 5));
		f.add(new Button("南"), BorderLayout.SOUTH);
		f.add(new Button("北"), BorderLayout.NORTH);
		// 创建一个Panel对象
		Panel p = new Panel();
		// 向Panel中添加两个组件
		p.add(new TextField(20));
		p.add(new Button("单击我"));
		// 默认添加到中间区域中,向中间区域添加一个Panel容器
		f.add(p);
		f.add(new Button("东"), BorderLayout.EAST);
		f.pack();
		f.setVisible(true);
	}

}
运行程序,结果如下图:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值