【发布时间】:2016-09-14 22:54:24
【问题描述】:
这种做法是不是很笨拙?
我尝试了很多方法,例如
- How can I exchange data between forms
- JavaFX pass values from child to parent
- JavaFX 2.2 -fx:include - how to access parent controller from child controller
但这似乎是相当直接和可以理解的。
public class ParentController {
private Settings settings;
public void setSettings(Settings settings) {
this.settings = settings;
System.out.println(this.settings.toString());
}
@FXML
private Button open;
@FXML
private void pass() throws IOException {
Stage st = new Stage();
FXMLLoader loader = new FXMLLoader(getClass().getResource("Child.fxml"));
Region root = (Region) loader.load();
Scene scene = new Scene(root);
st.setScene(scene);
ChildController controller = loader.<ChildController>getController();
controller.initialize(this);
st.show();
}
}
public class ChildController {
@FXML
private TextField number; // some settings
@FXML
private Button ok;
private ParentController parentController ;
@FXML
public void pass() {
Stage stage = (Stage) ok.getScene().getWindow();
parentController.setSettings(setSettings());
stage.close();
}
private Settings setSettings(){
return new Settings(Integer.valueOf(this.number.getText()));
}
public void initialize(ParentController parentController) {
this.parentController = parentController;
}
}
通过这种方式,我得到了在子控制器中生成的设置对象并将这个对象传递给父控制器。
这行得通...
这种方法合适吗?如果不是,可能意味着什么陷阱?
【问题讨论】: