Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数据从Java传递到FXML?_Java_Javafx_Controller_Fxml - Fatal编程技术网

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

如何将数据从Java传递到FXML?,java,javafx,controller,fxml,Java,Javafx,Controller,Fxml,在控制器中(或者主文件或其他文件,我不确定所有这些是如何工作的),我们有以下内容: String foo = "Foo."; FXMLLoader loader = new FXMLLoader(your_fxml_resource); Parent parent = loader.load(); YourControllerClass controller = loader.getController();//add this line to get your controller inst

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

String foo = "Foo.";
FXMLLoader loader = new FXMLLoader(your_fxml_resource);
Parent parent = loader.load();
YourControllerClass controller = loader.getController();//add this line to get your controller instance.
在场景Bilder生成的FXML中,类似于:

<Button mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />


如何使foo的值显示为按钮上的文本?我应该把它放在哪里,控制器还是别的什么地方?我仍然对主文件、控制器和FXML文件如何精确地结合在一起感到困惑。

您需要为按钮定义一个ID(在场景生成器中,或通过添加fx:ID=“yourId”标记,仅为每只手定义一个ID)

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

@FXML
private Button yourId;
现在,您可以访问按钮来调用所需的相应方法,在您的示例中
yourId.setText(foo)

如果要从应用程序类访问ControllerClass的实例,可以执行以下操作:

String foo = "Foo.";
FXMLLoader loader = new FXMLLoader(your_fxml_resource);
Parent parent = loader.load();
YourControllerClass controller = loader.getController();//add this line to get your controller instance.

您需要为按钮定义一个ID(在场景生成器中,或通过添加fx:ID=“yourId”标记,仅为每只手定义一个ID)

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

@FXML
private Button yourId;
现在,您可以访问按钮来调用所需的相应方法,在您的示例中
yourId.setText(foo)

如果要从应用程序类访问ControllerClass的实例,可以执行以下操作:

String foo = "Foo.";
FXMLLoader loader = new FXMLLoader(your_fxml_resource);
Parent parent = loader.load();
YourControllerClass controller = loader.getController();//add this line to get your controller instance.

通过注入,可以让控制器访问FXML中定义的UI元素。具体来说,在FXML中,为UI元素指定一个
fx:id
属性:

<Button fx:id="someButton" mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />
现在,您可以使用所需的任何逻辑配置按钮:

public class Controller {

    @FXML
    private Button someButton ;

    public void initialize() {
        String foo = "foo" ;
        someButton.setText(foo);
    }
}
请回答“问题是如何组合在一起”的问题的一部分,把FXML和控制器看作一对。FXML定义布局,而控制器定义逻辑(处理用户输入等)。控制器可以使用上述机制访问FXML文件中定义的UI元素

FXMLLoader
加载FXML文件时,在默认设置中,
FXMLLoader
创建控制器类的实例,将
@FXML
-注释字段注入控制器实例,并调用控制器实例的
initialize()
方法


应用程序
子类作为应用程序的起点存在。它通常只加载一个FXML文件,将FXML的根放在
场景
中,并在主阶段显示
场景
。如果您有一个更复杂的应用程序,您也可以在这里启动一些服务和后台线程。

您可以通过注入方式让控制器访问FXML中定义的UI元素。具体来说,在FXML中,为UI元素指定一个
fx:id
属性:

<Button fx:id="someButton" mnemonicParsing="false" prefHeight="25.0" prefWidth="61.0" text="Browse" />
现在,您可以使用所需的任何逻辑配置按钮:

public class Controller {

    @FXML
    private Button someButton ;

    public void initialize() {
        String foo = "foo" ;
        someButton.setText(foo);
    }
}
请回答“问题是如何组合在一起”的问题的一部分,把FXML和控制器看作一对。FXML定义布局,而控制器定义逻辑(处理用户输入等)。控制器可以使用上述机制访问FXML文件中定义的UI元素

FXMLLoader
加载FXML文件时,在默认设置中,
FXMLLoader
创建控制器类的实例,将
@FXML
-注释字段注入控制器实例,并调用控制器实例的
initialize()
方法

应用程序
子类作为应用程序的起点存在。它通常只加载一个FXML文件,将FXML的根放在
场景
中,并在主阶段显示
场景
。如果您有一个更复杂的应用程序,您也可以在这里启动一些服务和后台线程