如何将数据从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的根放在场景
中,并在主阶段显示场景
。如果您有一个更复杂的应用程序,您也可以在这里启动一些服务和后台线程