如何添加多个 HBox?

How do you add multiple HBox?

我最近开始使用 JavaFX,但遇到了问题。

我的任务是创建一个 GUI 应用程序,当用户使用 JavaFX 用户界面输入 属性 的实际值时显示评估值和 属性 税。

但出于某种原因,它没有按照我想要的方式工作。当我在场景部分输入对象时,它会打印出:

"java:不兼容的类型:javafx.scene.layout.HBox 无法转换为 double"

如何在一个场景中显示多个HBox?

本节说明

编写为实际值实例化控件的代码。然后,编写创建 HBox 布局容器的代码,并将您创建的控件放入其中 盒子。 HBox 中的控件之间应该有 10 个像素的间距。放 HBox 容器居中对齐。 编写实例化评估值输出标签控件的代码。 然后,编写创建 HBox 布局容器的代码,并放置控件 您在 HBox 中创建的。将 HBox 容器的对齐方式设置为左中。 编写实例化 属性 税收输出标签控件的代码。然后, 编写创建 HBox 布局容器的代码,并放置您需要的控件 在 HBox 中创建。将 HBox 容器的对齐方式设置为左中。 编写实例化 calcButton 控件的代码。然后写 创建 HBox 布局容器的代码,并放置您需要的控件 在 HBox 中创建。将 HBox 容器的对齐方式设置为居中。

我的代码(请忽略按钮部分,我还没做)

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class PropertyTax2 extends Application {

    @Override
    public void start(Stage stage) throws Exception {

        Label actualValue1 = new Label("Actual Value:");
        TextField input = new TextField();

        HBox actualValue2 = new HBox(10);
        actualValue2.setAlignment(Pos.CENTER);
        actualValue2.getChildren().addAll(actualValue1, input);

        Label assessmentValue1 = new Label("Assessment value:");
        Label propertyTax1 = new Label("Property tax:");

        HBox assessmentValue2 = new HBox();
        assessmentValue2.setAlignment(Pos.CENTER_LEFT);
        assessmentValue2.getChildren().addAll(assessmentValue1);

        HBox propertyTax2 = new HBox();
        propertyTax2.setAlignment(Pos.CENTER_LEFT);
        propertyTax2.getChildren().addAll(propertyTax1);


        Scene scene = new Scene(actualValue2, assessmentValue2, propertyTax2);
        stage.setScene(scene);
        stage.show();

    }

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

替换

Scene scene = new Scene(actualValue2, assessmentValue2, propertyTax2);

VBox root = new VBox(actualValue2, assessmentValue2, propertyTax2);
Scene scene = new Scene(root);

你得到 java: incompatible types: javafx.scene.layout.HBox cannot be converted to double 的原因是因为 Scene 的构造函数之一是 Scene​(Parent root, double width, double height)。所以在根节点之后,其他两个变量应该是双精度的。您试图传递更多节点。

注意:我建议重命名您的父节点。我还建议您做一些教程来学习何时以及如何使用父节点。这个解决方案不是很好。

我个人喜欢使用前缀让我知道变量是什么类型的节点。示例 HBox hBoxPropertyTax = new HBox()Label lblPropertyTax = new Label("Hello!")