如何将数据从 Java 传递到 FXML?

Sar*_*on1 1 java controller javafx fxml

在控制器(或者可能是主文件或其他文件,我不确定这一切是如何工作的)中,我们有以下内容:

String foo = "Foo.";
Run Code Online (Sandbox Code Playgroud)

在 Scene Bilder 生成的 FXML 中,是这样的:

<Button mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />
Run Code Online (Sandbox Code Playgroud)

如何使 foo 的值显示为按钮上的文本?我应该在哪里存储它,控制器还是其他地方?我仍然对 Main 文件、控制器和 FXML 文件如何准确组合在一起感到困惑。

M. *_*yes 5

您需要为按钮定义一个 ID(在场景构建器中或仅通过添加 fx:id="yourId" 标记来手动定义)。

在您的控制器类中,您必须添加

@FXML
private Button yourId;
Run Code Online (Sandbox Code Playgroud)

您现在可以访问 Button 以调用您需要的相应方法,在您的示例中 yourId.setText(foo);

如果您想从例如您的 Application 类访问您的 ControllerClass 的实例,您可以执行以下操作:

FXMLLoader loader = new FXMLLoader(your_fxml_resource);
Parent parent = loader.load();
YourControllerClass controller = loader.getController();//add this line to get your controller instance.
Run Code Online (Sandbox Code Playgroud)