【问题标题】:Passing variable into different scene in javafx [duplicate]将变量传递到javafx中的不同场景[重复]
【发布时间】:2016-03-17 01:14:44
【问题描述】:

我正在做 java fx,我陷入了将变量传递到不同的 FXML 场景中。所以在第一个场景控制器上,LoginController 与 Login.fxml 相关联

public class LoginController {

    @FXML private TextField username;
    @FXML private PasswordField password;
    @FXML private Button loginButton;
    @FXML private Label labelStatus;

    @FXML private void handleLoginButton() throws InterruptedException {

        try {
            FXMLLoader mainLoad = new FXMLLoader(getClass().getResource("../View/mainscreen.fxml"));
            Parent mainRoot = (Parent) mainLoad.load();
            Stage stage = new Stage();
            stage.setScene(new Scene(mainRoot));
            stage.show();
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
    }
}

当新场景打开时,我需要根据包含用户输入的用户名变量设置标签。这意味着我们需要通过控制器将变量从 Login.fxml 传递到 mainscreen.fxml。我如何做到这一点?

【问题讨论】:

    标签: java javafx fxml


    【解决方案1】:

    最简单的方法是通过设置器在MainScreenController 中设置适当的字段。你可以通过FXMLoader#getController() 方法(https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/FXMLLoader.html#getController--)获得负责这个 fxml 的控制器。

    其他方式取决于您的应用架构。应该有一个对象负责存储这类信息。

    【讨论】:

      【解决方案2】:

      你可以获取下一个场景控制器并传递变量

        FXMLLoader loader = new FXMLLoader(getClass().getResource("mainscreen.fxml"));
        MainScreenController controller = loader.getController();
        controller.setUserName(userName);
      

      【讨论】:

        猜你喜欢
        • 2020-02-24
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-10
        相关资源
        最近更新 更多