JavaFX FlowPane
JavaFX FlowPane是一个布局组件,可以垂直或者水平地布局其子组件,并且如果一行中没有足够的空间,可以将这些组件包装到下一行或者下一列。 JavaFX FlowPane布局组件由类javafx.scene.layout.FlowPane
表示。
创建一个FlowPane
我们可以通过JavaFXFlowPane
的构造函数来创建它。这是一个JavaFXFlowPane
实例化示例:
FlowPane flowpane = new FlowPane();
将子级添加到FlowPane
我们可以通过获取" FlowPane"的子级集合来将子级添加到" FlowPane"中,并向其中添加我们想要" FlowPane"进行布局的组件。这是向" FlowPane"添加3个按钮的示例:
Button button1 = new Button("Button Number 1"); Button button2 = new Button("Button Number 2"); Button button3 = new Button("Button Number 3"); FlowPane flowpane = new FlowPane(); flowpane.getChildren().add(button1); flowpane.getChildren().add(button2); flowpane.getChildren().add(button3);
将FlowPane添加到场景图
要使" FlowPane"可见,必须将其添加到JavaFX场景图中。为此,必须将" FlowPane"实例添加到" Scene"对象,或者将" FlowPane"添加到添加到" Scene"对象的布局组件。
这是向场景图添加JavaFXFlowPane
的示例:
package com.Hyman.javafx.layouts; import javafx.application.Application; import javafx.geometry.Orientation; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; public class FlowPaneExperiments extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("HBox Experiment 1"); Button button1 = new Button("Button Number 1"); Button button2 = new Button("Button Number 2"); Button button3 = new Button("Button Number 3"); FlowPane flowpane = new FlowPane(); flowpane.getChildren().add(button1); flowpane.getChildren().add(button2); flowpane.getChildren().add(button3); Scene scene = new Scene(flowpane, 200, 100); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); } }
该应用程序产生的应用程序如下图所示。请注意,当窗口变得太小而无法在单个水平行中全部显示时,按钮将如何向下流动到下一条水平线上。
水平和垂直间距
我们可以使用setFX的setHGap()和setVGap()的方法来设置JavaFX FlowPane内部显示的组件之间的水平和垂直间距。这是一个示例,展示了如何在FlowPane中设置组件之间的水平和垂直间隙:
flowpane.setHgap(10); flowpane.setVgap(10);
当添加到前面的示例中时,生成的应用程序将如下所示:
现在注意按钮之间的水平和垂直间隙。
方向
默认情况下," FlowPane"中的组件水平放置,当" FlowPane"内部不再有足够的空间可水平显示更多组件时,缠绕在下一条水平线上。
我们可以使用setPientation()方法更改FlowPane的流向(方向)。我们可以强制将组件从上到下按列排列,然后在高度上没有更多空间显示更多组件时更改列。这是操作方式:
flowpane.setOrientation(Orientation.VERTICAL);