在另一个控制器中传递变量

时间:2018-04-29 22:51:09

标签: java javafx controller scenebuilder

你好,我正在制作一个javafx程序,我遇到了一个问题: 我使用此

在另一个控制器中传递变量值
    buttonSignIn.setOnAction(e -> {
        try {
            User user = new User();
            user.setUsername(userName.getText().trim());
            user.setPassword(password.getText().trim());


            if (DB.validateLogin(user)){
                // change scene if this is true
                userId = DB.getUserId(user);
                System.out.println("Controller: users name: "+user.getUsername()+"users id: "+ userId);

                buttonSignIn.getScene().getWindow().hide();
                FXMLLoader loader = new FXMLLoader();
                loader.setLocation(getClass().getResource("/sample/view/user.fxml"));
                loader.load();

                Parent root = loader.getRoot();
                Stage stage = new Stage();
                stage.setScene(new Scene(root));

                UserController userController = loader.getController();
                userController.setUserId(userId);

                stage.showAndWait();

            }else{
                System.out.println("please type your username and password");

            }

        }catch (Exception ex){
            System.out.println("problem ..."+ ex);
        }
    });

我在“userController”传递它 userController中的代码: 在初始化方法中我有

usersLabel.setText(" users id is : "+getUserId());
System.out.println("User controller: users id is : "+ getUserId());

并在外部初始化我有吸气剂和制定者

public void setUserId(int id) {
    this.userId = id;
    System.out.println("User controller: users controller : "+userId);
    System.out.println("User controller: what is this?"+ getUserId());
}



public  int getUserId(){

    return userId;
}

我得到的结果是

  • 控制器:用户名:billusers id:1

  • 用户控制器:用户ID为:0

  • 用户控制器:用户控制器:1

  • 用户控制器:这是什么?1

我想用正确的userId值设置标签,但是initialize中的值是0而不是id为的任何数字,在这种情况下它是1

0 个答案:

没有答案