如何使用 FlowLayout
Note:
本课涵盖了手工编写布局代码,这可能会很困难。如果您不希望了解布局 管理 的所有详细信息,则可能更喜欢将GroupLayout
布局 管理 器与构建器工具结合使用来布局 GUI。 NetBeans IDE是此类构建器工具之一。否则,如果您想手工编码并且不想使用GroupLayout
,那么推荐使用GridBagLayout
作为下一个最灵活,功能最强大的布局 管理 器。
如果您对使用 JavaFX 创建 GUI 感兴趣,请参阅在 JavaFX 中使用布局。
FlowLayout类提供了一个非常简单的布局 管理 器,默认情况下,JPanel
对象使用该布局 管理 器。下图表示使用流布局的应用程序的快照:
单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行 FlowLayoutDemo。另外,要自己编译和运行示例,请查阅example index。
该演示的完整代码在FlowLayoutDemo.java文件中。
FlowLayout
类将组件排成一排,并按其首选大小调整大小。如果容器中的水平空间太小而无法将所有组件放在一行中,则FlowLayout
类将使用多行。如果容器比一排组件所需的宽度要宽,则默认情况下,该行在容器内水平居中。要指定该行是向左对齐还是向右对齐,请使用带有对齐参数的FlowLayout
构造函数。 FlowLayout
类的另一个构造函数指定围绕组件放置多少垂直或水平填充。
下面的代码段创建了一个FlowLayout
对象及其 管理 的组件。
FlowLayout experimentLayout = new FlowLayout();
...
compsToExperiment.setLayout(experimentLayout);
compsToExperiment.add(new JButton("Button 1"));
compsToExperiment.add(new JButton("Button 2"));
compsToExperiment.add(new JButton("Button 3"));
compsToExperiment.add(new JButton("Long-Named Button 4"));
compsToExperiment.add(new JButton("5"));
选择“从左到右”或“从右到左”选项,然后单击“应用方向”按钮以设置组件的方向。以下代码段将“从左到右”组件方向应用于experimentLayout
。
compsToExperiment.setComponentOrientation(
ComponentOrientation.LEFT_TO_RIGHT);
FlowLayout API
下表列出了FlowLayout
类的构造函数。
Constructor | Purpose |
---|---|
FlowLayout() | 构造一个新的FlowLayout 对象,该对象的居中对齐以及水平和垂直间隙(默认大小为 5 像素)。 |
FlowLayout(int align) | 使用指定的对齐方式以及水平和垂直间隙(默认大小为 5 像素)创建一个新的流布局 管理 器。对齐参数可以是FlowLayout.LEADING ,FlowLayout.CENTER 或FlowLayout.TRAILING 。当FlowLayout 对象控制容器从左到右的组件方向(默认)时,LEADING 值指定要左对齐的组件,而TRAILING 值指定要右对齐的组件。 |
FlowLayout(int align,int hgap,int vgap) | 创建具有指示的对齐方式和指示的水平和垂直间隙的新流布局 管理 器。 hgap 和vgap 参数指定要放置在组件之间的像素数。 |
使用 FlowLayout 的示例
下表列出了使用FlowLayout
类的代码示例,并提供了指向相关部分的链接。
Example | Where Described | Notes |
---|---|---|
FlowLayoutDemo | This page | 将内容窗格设置为使用FlowLayout 。如果将RIGHT_TO_LEFT 常量设置为true 并重新编译,则可以看到FlowLayout 如何处理具有从右到左组件方向的容器。 |
CardLayoutDemo | 如何使用 CardLayout | 将组件很好地居中放在BorderLayout 的顶部,然后将组件放在使用FlowLayout 的JPanel 中。 |
ButtonDemo | 如何使用按钮,复选框和单选按钮 | 使用JPanel 的默认FlowLayout 。 |
TextInputDemo | 如何使用格式化的文本字段 | 使用带有右对齐的FlowLayout 的面板,其中包含两个按钮。 |