如何添加多个 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!")
我最近开始使用 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!")