將資料傳遞給 FXML - 訪問現有控制器

問題: 某些資料需要傳遞給從 fxml 載入的場景。

使用 fx:controller 屬性指定控制器,並從用於載入 fxml 的 FXMLLoader 例項獲取在載入過程中建立的控制器例項。

新增將資料傳遞到控制器例項的方法,並處理這些方法中的資料。

FXML

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import javafx.scene.layout.*?>

<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="valuepassing.TestController">
    <children>
        <Text fx:id="target" />
    </children>
</VBox>

調節器

package valuepassing;

import javafx.fxml.FXML;
import javafx.scene.text.Text;

public class TestController {

    @FXML
    private Text target;

    public void setData(String data) {
        target.setText(data);
    }

}

用於載入 fxml 的程式碼

String data = "Hello World!";

FXMLLoader loader = new FXMLLoader(getClass().getResource("test.fxml"));
Parent root = loader.load();
TestController controller = loader.<TestController>getController();
controller.setData(data);