本教程适用于JDK 8。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以获取Java SE 9及后续版本中更新的语言特性的摘要。
请参阅JDK发布说明以获取所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息。
GroupLayout
布局管理器结合构建工具来布局您的GUI。其中一个构建工具是NetBeans IDE。否则,如果您想手动编码而不想使用GroupLayout
,那么推荐使用GridBagLayout
作为下一个最灵活和强大的布局管理器。
如果您有兴趣使用JavaFX创建GUI,请参阅在JavaFX中使用布局。
以下图示代表了一个使用BorderLayout
类的应用程序的快照。
点击“启动”按钮使用Java™ Web Start运行BorderLayoutDemo(下载JDK 7或更高版本)。或者,如果您想自己编译和运行示例,请参考示例索引。
这个演示的完整代码位于BorderLayoutDemo.java
文件中。
如上图所示,BorderLayout
对象有五个区域。这些区域由BorderLayout
常量指定:
PAGE_START
PAGE_END
LINE_START
LINE_END
CENTER
在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(int horizontalGap, int verticalGap) |
使用指定的间隙定义边框布局。 |
setHgap(int) |
设置组件之间的水平间隙。 |
setVgap(int) |
设置组件之间的垂直间隙。 |
以下表格列出了使用BorderLayout
类的代码示例,并提供了相关部分的链接。
示例 | 描述位置 | 备注 |
---|---|---|
BorderLayoutDemo |
本页 | 在五个可能的位置中放置一个组件。 |
TabbedPaneDemo |
如何使用选项卡窗格 | 这是众多示例之一,将单个组件放置在内容窗格的中央位置,以使组件尽可能大。 |
CheckBoxDemo |
如何使用复选框 | 创建一个使用BorderLayout 类的JPanel 对象。将组件放置在左侧(实际上是LINE_START )和中心位置。 |