文档

Java™教程
隐藏目录
布局管理器的视觉指南
路径: 使用Swing创建GUI
课程: 在容器中布置组件

布局管理器可视化指南

AWT和Swing类提供了一些常用的布局管理器:

本节展示了使用这些布局管理器的示例GUI,并告诉您在每个布局管理器的how-to页面中找到这些示例的链接。您可以在how-to页面和示例索引中找到运行示例的链接。


注意: 本课程涵盖手动编写布局代码的内容,这可能会有一定的挑战。如果您不想学习所有布局管理的详细信息,可以选择使用GroupLayout布局管理器结合构建工具来布局您的GUI。其中一个构建工具是NetBeans IDE。否则,如果您想手动编写代码而且不想使用GroupLayout,那么推荐使用GridBagLayout作为下一个最灵活和强大的布局管理器。

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

BorderLayout

一个使用BorderLayout的GUI的图片

每个内容窗格都被初始化为使用BorderLayout。(如使用顶级容器所解释的那样,内容窗格是所有框架、小程序和对话框中的主容器。)BorderLayout将组件放置在最多五个区域:顶部、底部、左侧、右侧和中间。所有额外的空间都放置在中间区域。使用JToolBar创建的工具栏必须创建在BorderLayout容器内,如果您希望能够将工具栏从其初始位置拖放出来。更多详情请参见如何使用BorderLayout

BoxLayout

一个使用BoxLayout的GUI的图片

BoxLayout类将组件放置在一行或一列中。它遵循组件的最大尺寸,并允许您对齐组件。更多详情请参见如何使用BoxLayout

CardLayout(卡片布局)

一个使用卡片布局的GUI图片 同一布局的另一个图片

CardLayout(卡片布局)类允许您在不同的时间段包含不同的组件的区域。通常,一个CardLayout(卡片布局)由一个下拉框控制,下拉框的状态决定CardLayout(卡片布局)显示的面板(一组组件)。使用CardLayout(卡片布局)的另一种选择是使用选项卡窗格,它提供类似的功能但有一个预定义的GUI。详细信息请参阅如何使用CardLayout(卡片布局)

FlowLayout(流式布局)

一个使用流式布局的GUI图片

FlowLayout(流式布局)是每个JPanel(面板)的默认布局管理器。它简单地将组件按照一行排列,如果其容器宽度不够,则开始新的一行。CardLayoutDemo中的两个面板,之前展示的前面,都使用了FlowLayout(流式布局)。详细信息请参阅如何使用FlowLayout(流式布局)

GridBagLayout(网格包布局)

一个使用网格包布局的GUI图片

GridBagLayout(网格包布局)是一个复杂而灵活的布局管理器。它通过将组件放置在一个单元格的网格中来对齐它们,允许组件跨越多个单元格。网格的行可以具有不同的高度,网格的列可以具有不同的宽度。详细信息请参阅如何使用GridBagLayout(网格包布局)

GridLayout(网格布局)

一个使用网格布局的GUI图片

GridLayout(网格布局)简单地使一组组件大小相等,并以请求的行数和列数显示它们。详细信息请参阅如何使用GridLayout(网格布局)

GroupLayout(分组布局)

一个使用GroupLayout(分组布局)的GUI图片

GroupLayout(分组布局)是一个为GUI构建工具开发的布局管理器,但也可以手动使用。GroupLayout(分组布局)分别处理水平和垂直布局。布局在每个维度上独立定义。因此,每个组件在布局中需要定义两次。上面显示的Find窗口是GroupLayout(分组布局)的一个示例。详细信息请参阅如何使用GroupLayout(分组布局)

SpringLayout(弹簧布局)

一个使用SpringLayout的GUI图片
另一个使用SpringLayout的GUI图片

SpringLayout(弹簧布局)是一种为GUI构建器设计的灵活布局管理器。它允许您指定其控制下的组件边缘之间的精确关系。例如,您可以定义一个组件的左边缘与第二个组件的右边缘之间的距离(可以动态计算)。SpringLayout根据一组约束条件来布局其关联容器的子组件,将在如何使用SpringLayout中介绍。


上一页: 在容器中布局组件
下一页: 使用布局管理器