如何使用 BorderLayout
Note:
本课涵盖了手工编写布局代码,这可能会很困难。如果您不希望了解布局 管理 的所有详细信息,则可能更喜欢将GroupLayout
布局 管理 器与构建器工具结合使用来布局 GUI。 NetBeans IDE是此类构建器工具之一。否则,如果您想手工编码并且不想使用GroupLayout
,那么推荐使用GridBagLayout
作为下一个最灵活,功能最强大的布局 管理 器。
如果您对使用 JavaFX 创建 GUI 感兴趣,请参阅在 JavaFX 中使用布局。
下图表示使用BorderLayout类的应用程序的快照。
单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行 BorderLayoutDemo。另外,要自己编译和运行示例,请查阅example index。
该演示的完整代码在BorderLayoutDemo.java文件中。
如上图所示,一个BorderLayout
对象具有五个区域。这些区域由BorderLayout
常量指定:
-
PAGE_START
-
PAGE_END
-
LINE_START
-
LINE_END
-
CENTER
Version note:
在 JDK 1.4 版之前,各个区域的首选名称有所不同,范围从指南针的点(例如,顶部区域为BorderLayout.NORTH
)到示例中使用的常量的更高级版本。我们的示例使用的常量是首选的,因为它们是标准的,并使程序能够适应具有不同方向的语言。
如果将窗口放大,则中心区域将获得尽可能多的可用空间。其他区域仅根据需要扩展以填充所有可用空间。通常,容器仅使用BorderLayout
对象的一个或两个区域-仅中心,或中心和底部。
以下代码将组件添加到框架的内容窗格。由于默认情况下内容窗格使用BorderLayout
类,因此该代码不需要设置布局 管理 器。完整程序位于BorderLayoutDemo.java文件中。
...//Container pane = aFrame.getContentPane()...
JButton button = new JButton("Button 1 (PAGE_START)");
pane.add(button, BorderLayout.PAGE_START);
//Make the center component big, since that's the
//typical usage of BorderLayout.
button = new JButton("Button 2 (CENTER)");
button.setPreferredSize(new Dimension(200, 100));
pane.add(button, BorderLayout.CENTER);
button = new JButton("Button 3 (LINE_START)");
pane.add(button, BorderLayout.LINE_START);
button = new JButton("Long-Named Button 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) //preferred
但是,其他程序中的代码将组件指定为第二个参数。例如,这是编写前面代码的替代方法:
add(BorderLayout.CENTER, component) //valid but old fashioned
or
add("Center", component) //valid but error prone
BorderLayout API
下表列出了用于指定间隙(以像素为单位)的构造函数和方法。
Specifying gaps
构造函数或方法 | Purpose |
---|---|
BorderLayout(int horizontalGap,int verticalGap) | 定义边框布局,并在组件之间指定间隙。 |
setHgap(int) | 设置组件之间的水平间距。 |
setVgap(int) | 设置组件之间的垂直间隙。 |
使用 BorderLayout 的示例
下表列出了使用BorderLayout
类的代码示例,并提供了指向相关部分的链接。
Example | Where Described | Notes |
---|---|---|
BorderLayoutDemo | This page | 将组件放置在五个可能的位置中的每个位置。 |
TabbedPaneDemo | 如何使用选项卡式窗格 | 将单个组件放在内容窗格中央的许多示例之一,以使组件尽可能大。 |
CheckBoxDemo | 如何使用复选框 | 创建一个使用BorderLayout 类的JPanel 对象。将组件置于左侧(实际上是LINE_START )和中心位置。 |