[英]JavaFX passing and getting parameters between Stage
我有兩個階段
具有Scene1和自己的Controller1的Stage1
和
帶有另一個Scene2和Controller2的Stage2
從Stage1,我使用ShowAndWait調用Stage2。
並為隱藏階段設置了Stage2偵聽器。
從Stage2.Controller2調用隱藏並斷點在
setOnHiding(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent t) {
System.out.print(t.getSource());
}
});
在某些情況下,如何在此階段之間傳遞參數:
1.stage1傳遞到stage2
2. stage2對stage1產生一些數據參數
?
這是我的解決方案:我有2個類MyStage和MyController Stage1,Stage2應該擴展MyStage Controller1,Controller2應該擴展MyController
Stage2 s2 = new MyStage(data);
s2.show();
result = s2.getResult();
class Stage2 extends Stage{
private FXMLLoader fxmlLoader;
private Object data;
private Object result;
public Stage(Object data){
this.data = data;
...//do something with data
getController().initWithData(data);
}
Object getResult(){
return getController().getResult();
}
public MyController getController() {
return (MyController) fxmlLoader.getController();
}
}
Class MyController{
public void initWithData(Object data){
...//
}
public Object getResult(){
...//
return result;
}
public void setStage(Stage stage) {
this.stage = stage;
}
@FXML
protected void close() {
getStage().close();
}
}
這很普通,但是使用fxml和non-fxml時代碼會有一些細微的變化。 您可以將階段引用傳遞給控制器,以從另一個控制器關閉階段。 我現在太困了,希望沒有錯誤。 我稍后再更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.