有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何添加多个HBox?

我最近开始使用JavaFX,但我在这方面遇到了麻烦

我的任务是创建一个GUI应用程序,当用户通过JavaFX用户界面输入房产的实际价值时,该应用程序将显示评估值和房产税

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

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

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

本节说明

编写代码,为实际值实例化控件。然后,编写创建HBox布局容器的代码,并将创建的控件放在其中 HBox。HBox中的控件之间应该有10个像素的间距。设置 HBox容器与中心对齐。 编写用于实例化评估值输出标签控件的代码。 然后,编写创建HBox布局容器的代码,并放置 你在HBox内部创建的。将HBox容器的对齐设置为左中。 编写实例化物业税输出标签控件的代码。然后 编写创建HBox布局容器的代码,并放置所需的控件 在HBox内部创建。将HBox容器的对齐设置为左中。 编写用于实例化calcButton控件的代码。然后,写 创建HBox布局容器并放置所需控件的代码 在HBox内部创建。将HBox容器的对齐设置为中心

enter image description here

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

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

共 (1) 个答案

  1. # 1 楼答案

    替换

    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!")