この方法は低コストですか?JavaFXはコントローラ(親子フォーム)間でデータを交換します
私は多くのアプローチを試みました。
- 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;
}
}
子供のコントローラで生成され、親コントローラにこのオブジェクトを渡すオブジェクト。
これは機能します...
このアプローチは適切ですか?そうでない場合、どのような落とし穴があるのでしょうか?