JavaFX HBox

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

JavaFX HBox组件是一个布局组件,它将其所有子节点(组件)放置在水平行中。 Java HBox组件由类javafx.scene.layout.HBox表示。

创建一个HBox

我们可以使用其构造函数创建" HBox",如下所示:

HBox hbox = new HBox();

HBox还具有一个构造函数,该构造函数采用了可变长度的应布局组件列表。这是如何执行此操作的示例:

Button button1 = new Button("Button Number 1");
Button button2 = new Button("Button Number 2");

HBox hbox = new HBox(button1, button2);

这个" HBox"示例将在水平行中将两个Button实例彼此相邻布置。

将HBox添加到场景图

为了使" HBox"可见,必须将其添加到场景图中。这意味着将其添加到"场景"对象,或者作为添加到"场景"对象的布局的子级。

这是一个将JavaFXHBox和两个Button实例添加到场景图的示例:

package com.Hyman.javafx.layouts;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class HBoxExperiments 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");

    HBox hbox = new HBox(button1, button2);

    Scene scene = new Scene(hbox, 200, 100);
    primaryStage.setScene(scene);
    primaryStage.show();
  }

  public static void main(String[] args) {
    Application.launch(args);
  }
}

运行上面的JavaFXHBox示例的结果是一个看起来像这样的应用程序:

请注意,即使没有足够的空间以其完全首选的宽度显示两个"按钮"控件,它们也保持在同一水平行上。按钮不会在下一行上"自动换行"。

子节点间距

在较早的示例中," HBox"将节点(按钮控件)彼此紧邻放置。我们可以通过在HBox构造函数中提供空格,使HBox在其嵌套控件之间插入一些空间。这是在HBox中设置嵌套控件之间的空间的示例:

HBox hbox = new HBox(20, button1, button2);

本示例将HBox布局组件中控件之间的间距设置为20。

我们也可以使用setSpacing()method来设置嵌套控件之间的空间,如下所示:

hbox.setSpacing(50);

本示例将嵌套控件之间的间距设置为50。

子节点保证金

我们可以使用静态setMargin()方法为JavaFX HBox的子节点设置边距。这是一个使用setMargin()方法在JavaFX Button周围设置边距的示例:

Button button1   = new Button("Button 1");

HBox hbox = new HBox(button1);

HBox.setMargin(button1, new Insets(10, 10, 10, 10));

本示例将HBox内Button周围的边距设置为每边10.

子节点对齐

由于JavaFX HBox是容器组件,意味着它包含其他JavaFX组件,因此我们可以指定HBox如何对齐其包含的组件。我们可以通过HBox的setAlignment()方法来实现。这是为JavaFX HBox设置子节点的对齐方式的示例:

hbox.setAlignment(Pos.BASELINE_CENTER);

此示例将使HBox沿着垂直线的基线(垂直)并从该线的中心开始(水平)向外放置其子节点。

JavaFX VBox控件支持以下对齐选项:

参数垂直水平
Pos.BASELINE_LEFT基线
Pos.BASELINE_CENTER基线中心
Pos.BASELINE_RIGHT基线
Pos.BOTTOM_LEFT底部
Pos.BOTTOM_CENTER底部中心
Pos.BOTTOM_RIGHT底部
Pos.CENTER_LEFT中心
Pos.CENTER中心中心
Pos.CENTER_RIGHT中心
Pos.TOP_LEFT顶部
Pos.TOP_CENTER顶部中心
Pos.TOP_RIGHT顶部

子节点生长

我们可以指定HBox的子节点是否应水平增长以填充HBox内部可用的任何可用空间。我们可以通过HBox的setHgrow()静态方法来执行此操作。我们必须指定为其设置规则的子节点。我们可以通过将子节点作为参数传递给setHgrow()来实现。我们还必须将水平扩展策略作为参数传递给setHgrow()。这是一个告诉子按钮在HBox内有可用空间时向水平方向扩展的示例:

Button button1   = new Button("Button 1");

HBox hbox = new HBox(button1);

HBox.setHgrow(button1, Priority.ALWAYS);

Priority类包含以下可用于设置扩展策略的常量:

  • Policy.ALWAYS
  • Policy.SOMETIMES
  • Policy.NEVER

请记住,仅当HBox的宽度大于其子级的首选宽度之和时,HBox才会有额外的水平空间。

HBox的首选高度

HBox的默认首选高度设置为其任何子节点的最大首选高度相同的值。

fillHeight

JavaFX HBox的fillHeight属性可用于告诉HBox控件是否应扩展其子代的高度以填充HBox的整个高度,或者将其子代保持在其首选高度。

" fillHeight"属性仅影响高度可以实际更改的子组件。例如,默认情况下,Button不会更改其高度。它的最大高度设置为其首选高度。但是,可以通过将Button或者要嵌套在HBox中的任何其他组件的最大高度设置为与其首选值不同的值来覆盖该值。

这是一个显示fillHeight属性如何工作的示例:

Button button1   = new Button("Button 1");
button1.setMaxHeight(99999.0D); //or Double.MAX_VALUE;

HBox hbox = new HBox(button1);

hbox.setFillHeight(true);