第 10 章 高级组件 GUI 设计
10.1 界面布局管理
从前面的例子我们可以看出,容器中的基本组件都是被简单
地加入到了容器,那时我们无法设计和控制这些组件在容器中
的相互位置,从而导致了某些界面不合理。而 Java 语言中提供
的布局编辑类,其目的正是为了将组件排列在容器中合适的位
置上。 Java.awt 包中共定义了五种布局编辑类,分别是 FlowLay
out , BorderLayout , CardLayout , GridLayout 和 GridBagLay
out 。每个布局编辑类对应一种布局策略,这五个类都是 java.la
ng.Object 类的直接子类。 Javax.swing 包中定义了 4 种布局编
辑类,分别是 BoxLayout 、 ScrollPaneLayout 、 ViewportLayout
和 OverlayLayout 。下面将讨论 FlowLayout , BorderLayout , C
ardLayout , GridLayout 和 BoxLayout 几种常用的布局策略。
第 10 章 高级组件 GUI 设计
10.1.1 BorderLayout
java.BorderLayout 类是 java.lang.Object 类的直接子类。 Borde
rLayout 布局策略是把容器内的空间划分为东、西、南、北、中五
个区域 ( 如图 10.1 所示 ) 。这五个区域分别用字符串常量 East 、
West 、 South 、 North 、 Center 表示。向这个容器内每加入一
个组件都应该指明把它放在容器的哪个区域中。分布在北部和南
部区域的组件将横向扩展至占据整个容器的长度;分布在东部和
西部的组件将伸展至占据容器剩余部分的全部宽度;最后剩余的
部分将分配给位于中央的组件。如果某个区域没有分配组件,则
其他组件可以占据它的空间。例如,如果北部没有分配组件,则
西部和东部的组件将向上扩展到容器的最上方;如果西部和东部
没有分配组件,则位于中央的组件将横向扩展到容器的左右边界。
BorderLayout 是 JApplet 的缺省布局策略。
第 10 章 高级组件 GUI 设计
BorderLayout 类有两个构造方法,分别是无参数的 BorderLay
out( ) 和带参数的 BorderLayout(int hgap, int vgap) 。前者创建一
个各组件间的水平、垂直间隔为 0 的 BorderLayout 类的对象;
后者创建一个各组件间的水平间隔为 hgap 、垂直间隔为 vgap
的 BorderLayout 类的对象。
BorderLayout 仅指定了五个区域的位置,如果容器中需要加
入的组件超过五个,就必须使用容器的嵌套或改用其他的布局
策略。让我们先来看一个例子。
第 10 章 高级组件 GUI 设计
【示例程序 c10_1.java 】 使用 BorderLayout 布局策略在五
个位置分别加入了四个按钮和一个标签,当点击按钮时,标签
的文本就是按钮的标签的文本。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class c10_1 extends JApplet implements ActionListe
ner
{ JButton bt1=new JButton(" 北部 "),
评论0