将变量传递到javafx中的不同场景

时间:2015-12-11 07:28:26

标签: java javafx fxml

我正在做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;
        }
    }
}

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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