javafx 将数据传递到FXML-指定控制器实例
示例
问题:一些数据需要传递到从fxml加载的场景。
解
FXMLLoader使用稍后用于加载fxml的实例设置控制器。
加载fxml之前,请确保控制器包含相关数据。
注意:在这种情况下,fxml文件不得包含该fx:controller属性。
XML文件
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.text.*?> <?import javafx.scene.layout.*?> <VBox xmlns:fx="http://javafx.com/fxml/1"> <children> <Text fx:id="target" /> </children> </VBox>
控制者
import javafx.fxml.FXML; import javafx.scene.text.Text; public class TestController { private final String data; public TestController(String data) { this.data= data; } @FXML private Text target; public void initialize() { //注入字段后处理数据 target.setText(data); } }
用于加载fxml的代码
String data = "你好,世界!"; FXMLLoader loader = new FXMLLoader(getClass().getResource("test.fxml")); TestController controller = new TestController(data); loader.setController(controller); Parent root = loader.load();