尝试在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 错误。
有人知道如何解决这个问题吗?提前谢谢。
答案 0 :(得分:1)
将public String userLogged = "Desmond";
变为private
变量,然后在主窗口中创建公共getter:
public String getUserLogged(){
return userLogged;
}
然后你可以在应用程序的另一个“页面”上调用此变量,方法是使用主window.getUserLogged()
的名称来调用它,如果你想要的话。将用户名放入名为infoLabel的标签中。
infoLabel.setText(nameOfMainWindow.getUserLogged());
希望这会有所帮助:)