JavaFX FlowPane

时间:2020-01-09 10:36:36  来源:igfitidea点击:

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);