文档

Java™ 教程
隐藏目录
如何使用边界布局
教程:使用Swing创建GUI
课程:在容器中布局组件

如何使用边界布局(BorderLayout)


注意: 本课程涵盖了手动编写布局代码,这可能是具有挑战性的。如果您对学习布局管理的所有细节不感兴趣,您可能更喜欢使用GroupLayout布局管理器结合构建工具来布局您的GUI。其中一个构建工具是NetBeans IDE。否则,如果您想手动编码而不想使用GroupLayout,那么推荐使用GridBagLayout作为下一个最灵活和强大的布局管理器。

如果您有兴趣使用JavaFX创建GUI,请参阅在JavaFX中使用布局

以下图示代表了一个使用BorderLayout类的应用程序的快照。

BorderLayoutDemo的快照

点击“启动”按钮使用Java™ Web Start运行BorderLayoutDemo(下载JDK 7或更高版本)。或者,如果您想自己编译和运行示例,请参考示例索引

启动BorderLayoutDemo应用程序

这个演示的完整代码位于BorderLayoutDemo.java文件中。

如上图所示,BorderLayout对象有五个区域。这些区域由BorderLayout常量指定:


版本说明: 

在JDK 1.4之前,各个区域的首选名称不同,从指南针点(例如,BorderLayout.NORTH表示顶部区域)到我们示例中使用的常量的更冗长版本。我们示例中使用的常量是首选的,因为它们是标准的,可以使程序适应具有不同方向的语言。


如果窗口被放大,中心区域会尽可能多地占用可用空间。其他区域只会扩展到填满所有可用空间所需的程度。通常,容器只使用BorderLayout对象的一个或两个区域 - 中心区域,或中心区域和底部区域。

下面的代码向框架的内容窗格添加组件。因为内容窗格默认使用BorderLayout类,所以代码不需要设置布局管理器。完整的程序在BorderLayoutDemo.java文件中。

...//Container pane = aFrame.getContentPane()...
JButton button = new JButton("按钮1(PAGE_START)");
pane.add(button, BorderLayout.PAGE_START);

//将中心组件设为较大,因为这是使用BorderLayout的典型用法。
button = new JButton("按钮2(CENTER)");
button.setPreferredSize(new Dimension(200, 100));
pane.add(button, BorderLayout.CENTER);

button = new JButton("按钮3(LINE_START)");
pane.add(button, BorderLayout.LINE_START);

button = new JButton("长命名按钮4(PAGE_END)");
pane.add(button, BorderLayout.PAGE_END);

button = new JButton("5(LINE_END)");
pane.add(button, BorderLayout.LINE_END);

将组件的位置(例如,BorderLayout.LINE_END)作为add方法的参数之一指定。如果这个组件在由BorderLayout对象控制的容器中缺失,请确保已指定组件的位置,并且没有将另一个组件放置在相同的位置上。

所有使用BorderLayout类的教程示例都将组件指定为add方法的第一个参数。例如:

add(component, BorderLayout.CENTER)  //首选

然而,其他程序中的代码将组件指定为第二个参数。例如,以下是编写前面代码的其他方式:

add(BorderLayout.CENTER, component)  //有效但老式的写法
    或者
add("Center", component)             //有效但容易出错

BorderLayout API

下表列出了用于指定间隙(以像素为单位)的构造方法和方法。

指定间隙
构造方法或方法 目的
BorderLayout(int horizontalGap, int verticalGap) 使用指定的间隙定义边框布局。
setHgap(int) 设置组件之间的水平间隙。
setVgap(int) 设置组件之间的垂直间隙。

使用BorderLayout的示例

以下表格列出了使用BorderLayout类的代码示例,并提供了相关部分的链接。

示例 描述位置 备注
BorderLayoutDemo 本页 在五个可能的位置中放置一个组件。
TabbedPaneDemo 如何使用选项卡窗格 这是众多示例之一,将单个组件放置在内容窗格的中央位置,以使组件尽可能大。
CheckBoxDemo 如何使用复选框 创建一个使用BorderLayout类的JPanel对象。将组件放置在左侧(实际上是LINE_START)和中心位置。

上一页: 如何使用各种布局管理器
下一页: 如何使用BoxLayout