2016-09-13 4 views
0

この方法は低コストですか?JavaFXはコントローラ(親子フォーム)間でデータを交換します

私は多くのアプローチを試みました。

  1. How can I exchange data between forms
  2. JavaFX pass values from child to parent
  3. 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; 
    } 
} 

子供のコントローラで生成され、親コントローラにこのオブジェクトを渡すオブジェクト。

これは機能します...

このアプローチは適切ですか?そうでない場合、どのような落とし穴があるのでしょうか?

答えて

0

質問はおそらくこのフォーラムの意見に基づいています。 (JavaFX pass values from child to parentと比較して)シンプルさのトレードオフは、子供を親にしっかりと結合しているということです。言い換えれば、子ビュー/コントローラを使用することはできません。その特定の親を持っている。リンクされたアプローチでは、子ビュー/コントローラは親に依存しません。これが望ましい/有益であるか否かは、正確なユースケースに依存します。

0

私はそれが適切だと思った。私にとってはそれは単なるコーディングスタイルでした。

私の意見では、Mainクラスに格納され、Mainクラスで初期化されたpublic staticに設定変数を変更し、すべてのコントローラや他のクラスからアクセスできるようにします。私のスタイルのthats:D

public static settings Settings; 

Main.settings.(Something) 

コーディングハッピー..

関連する問題