Is this approach lame to do so?
I've tried many approaches e.g.
- 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
but this seems to be pretty direct and understandable.
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;
}
}
In such the way I'm getting settings object generated in Child controller and pass this object to the parent controller.
This works...
Is this approach appropriate? If not, what pitfall is may imply?