布局管理器概述
在讨论每个Swing组件(例如文本域和单选按钮)之前,首先介绍一下如何把这些组件安排在一个框架内。与Visual Basic不同,JDK没有表单设计器,需要通过编写代码来定制(布局)用户界面组件所在的位置。
当然,如果有支持Java的开发环境,就可能存在某种布局工具部分自动地或全部自动地完成这些布局任务。然而,确切地了解底层的实现方式是非常重要的,因为即使最好的工具有时也需要手工编码。
回顾上一章的程序,我们设计了几个按钮,点击这些按钮可以改变框架的背景颜色参见图9-5。
下面快速回顾一下该程序的编写过程:
1)在按钮的构造器中设置标签字符串定义每个按钮的
外观,例如:
JButton yellowButton = new JButton("Yellow")
2)然后把每个按钮添加到面板中,例如:
panel.add(yellowButton);
3)添加需要的事件处理器。例如:
yellowButton.addActionListener(listener);
如果添加更多的按钮会怎样呢?图9-6显示了一个带有6个按钮的面板。正如你所看到的,按钮居中显示在一行中,当一行的空间不够时,将显示在新的一行上。
即使用户对框架进行缩放,这些按钮也会显示在面板的中央,如图9-7所示。
Java用一个非常出色的概念实现动态布局:容器内的所有组件都由一个布局管理器(layoutmanager)进行定位。在列举的示例中,所有的按钮都通过流布局管理器(flow layout manager)进行管理,这是面板的默认布局管理器。
流布局管理器的特点是在一行上水平排列组件,直到没有足够的空间为止,这时开始新的一行。
当用户缩放容器时,布局管理器自动地调整组件的位置使其填充可用的空间。
还可以选择在每一行上排列组件的方案。默认方式是居中显示。另外还有容器的左对齐和右对齐。要想使用这些对齐方式,需要在FlowLayout对象的构造器中指定LEFT或者RIGHT参数。例如:
pa