2017-03-09 29 views
1

入れ子(子)のfxmlファイルにボタンがあり、子のコントローラーでボタンのクリックで発生するアクションイベントが作成されているとします。その方法から、メイン(親)fxmlの特定のコントロール(タブパインのいくつかのタブなど)を無効にしたり有効にしたりします。JavaFX - 子からの親fx:idへのアクセス

どうすればこの問題を解決できますか? JavaFX - Access fx:id from nested FXML

すべてのヘルプは大歓迎です。

これは、私はそれを他の方法で回避を行う方法を検討している、見つかった最も近いスレッドです!

答えて

0

ネストされたコントローラで観測可能プロパティを定義し、周囲のコントローラからそれを観察する:「囲む」(親)コントローラ<fx:include>とFXMLファイルの(すなわちコントローラで

public class ChildController { 

    private final BooleanProperty stuffShouldBeDisabled = new SimpleBooleanProperty(); 

    public BooleanProperty stuffShouldBeDisabledProperty() { 
     return stuffShouldBeDisabled ; 
    } 

    public final boolean getStuffShouldBeDisabled() { 
     return stuffShouldBeDisabledProperty().get(); 
    } 

    @FXML 
    private void handleButtonClick(ActionEvent event) { 
     stuffShouldBeDisabled.set(! stufShouldBeDisabled.get()); 
    } 

    // ... 
} 

、その後、タグ):

public class MainController { 

    @FXML 
    private ChildController childController ; // injected via <fx:include fx:id="child" ... /> 

    @FXML 
    private Tab someTab ; 

    public void initialize() { 
     childController.stuffShouldBeDisabledProperty().addListener((obs, wasDisabled, isNowDisabled) -> { 
      someTab.setDisable(isNowDisabled); 
     } 
    } 

    // ... 
} 
+0

ありがとう、これは私が探していたものだと思います。私が家に帰ると、私はよく見て、あなたの答えに基づいて私がそれを理解できるかどうかを見てみましょう!とても有難い :) –

関連する問題