将变量从窗口传递到窗口

时间:2013-06-26 08:35:07

标签: java swing constructor javafx

尝试在JavaFX中沿窗口传递值时遇到了一些问题。让我们说从登录页面,用户成功登录后,用户名将从登录页面传递到主页面。我想做的是将userLogged从主页面传递到另一个页面。这是我在主页中的代码:

public String userLogged = "Desmond";

public void goProduct(ActionEvent event){
     try {
            Stage stage = new Stage();
            stage.setTitle("Shop Management");
            Pane myPane = null;
            myPane = FXMLLoader.load(getClass().getResource("retrieveProduct.fxml"));
            Scene scene = new Scene(myPane);
            stage.setScene(scene);     
            RetrieveProductUI rpUI = new RetrieveProductUI(userLogged);
            stage.show();
            //hide this current window (if this is whant you want
            ((Node) (event.getSource())).getScene().getWindow().hide();
        } catch (IOException e) {
            e.printStackTrace();
        }
}

然后在产品页面内,我把一个构造函数带到userLogged:

public String userLogged;
public RetrieveProductUI(String userLogged){
    this.userLogged = userLogged;
}

然后我用标签显示它。我用Java Swing方式做了,它通过构造函数传递一个变量。但是,我这样做了 InstantiationException 错误。

有人知道如何解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

public String userLogged = "Desmond";变为private变量,然后在主窗口中创建公共getter:

public String getUserLogged(){
 return userLogged;
}

然后你可以在应用程序的另一个“页面”上调用此变量,方法是使用主window.getUserLogged()的名称来调用它,如果你想要的话。将用户名放入名为infoLabel的标签中。

infoLabel.setText(nameOfMainWindow.getUserLogged());

希望这会有所帮助:)