以下のような状況を考えてみましょう。 Pane parentPane
があり、Pane firstChildPane, secondChildPane, thirdChildPane ...
があります。親ペインに子ペインが追加されます。どのように子ペインが表示されても、その子ペインが制限なく任意の順序で追加および削除できることを考慮して、parentPaneを表示させるにはどうすればよいですか。もちろんchildPaneの可視状態もいつでも変更できます。動的にBindings.ORを作成して、子の可視プロパティを動的に追加/削除できるようにすることは可能ですか?はいの場合は、どうですか?そうでない場合は、そのような場合にどのような解決法が使われますか?JavaFXで動的Bindings.ORを作成することは可能ですか?
答えて
次の線に沿って何かを試すことができます。
Pane parentPane = ... ;
BooleanBinding someVisibleChildren = new BooleanBinding() {
{
parentPane.getChildren().forEach(n -> bind(n.visibleProperty()));
parentPane.getChildren().addListener((Change<? extends Node> c) -> {
while (c.next()) {
c.getAddedSubList().forEach(n -> bind(n.visibleProperty()));
c.getRemoved().forEach(n -> unbind(n.visibleProperty())) ;
}
});
bind(parentPane.getChildren());
}
@Override
public boolean computeValue() {
return parentPane.getChildren().stream()
.filter(Node::isVisible)
.findAny()
.isPresent();
}
}
parentPane.visibleProperty().bind(someVisibleChildren);
これで、[使用しているファクトリメソッド](https://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/Bindings.html#bindContent-java)にコメントすることになりました。 util.List-javafx.collections.ObservableList-)は、「リストがObservableListにバインドされると、リストを直接変更することはできません。そうすることで予期しない結果につながる」と述べています。したがって、 'bindContentBidirectional'はより安全な選択肢のようです... – Itai
@sillyflyしかし、ここでは 'children'を直接変更することはできません(ローカル変数にしたり、カプセル化して直接変更することはできません) –
ああ...それは他の方法であることに気づいた!これは、観察可能なものに「束縛」される観測不可能なリストである(そして観察可能なものは安全に変更できるものです)が、直感的ではないようですが、それは意味をなさない唯一の方法だと思います。 – Itai
- 1. JavaFXでXYChart.Seriesの配列を作成することは可能ですか?
- 2. JavaFXでコントローラの配列を作成することは可能ですか?
- 3. d3で動的グリッド線グラフを作成することは可能ですか?
- 4. JavaFX Webアプレットを作ることは可能ですか?
- 5. Gradle。 Kotlin - 動的(「オン・フライ」)タスクを作成することは可能ですか?
- 6. この一般的なインターフェイスを作成することは可能ですか?
- 7. レールでテストを動的に生成することは可能ですか?
- 8. CMDでゲームを作成することは可能ですか?
- 9. Subversionでカスタムフックイベントを作成することは可能ですか?
- 10. javafxネイティブパッケージインストーラのスタイルをカスタマイズすることは可能ですか?
- 11. JavaFxでスクロール可能なVBoxを作成
- 12. 動的Webページをキャッシュすることは可能ですか?
- 13. Android:Contentviewを動的にすることは可能ですか?
- 14. SSRS RDLファイルを動的に生成することは可能ですか?
- 15. md-option要素を動的に生成することは可能ですか?
- 16. Python - 関数を動的に生成することは可能ですか?
- 17. 静的拡張を作成することは可能ですか?
- 18. PhoneApplicationPageをプログラム的に作成してナビゲートすることは可能ですか?
- 19. 動的に作成されたフィールドをレジスタ形式で必要とすることは可能ですか?
- 20. VisualStudioで動的コードでコードスニペットを作成することは可能ですか?2015
- 21. 電子メールフックを作成することは可能ですか?
- 22. カスタムToolBarItemを作成することは可能ですか
- 23. WinRTサービスを作成することは可能ですか
- 24. LinearLayoutsのGridVIewを作成することは可能ですか?
- 25. HashMapのキューを作成することは可能ですか?
- 26. ボーダーレスUWPアプリケーションを作成することは可能ですか?
- 27. Bazaarにサブブランチを作成することは可能ですか?
- 28. テキストフィールドを作成することは可能ですか?
- 29. Wii Uタブレットインタラクションを作成することは可能ですか?
- 30. は、アンドロイドでミラーアプリケーションを作成することは可能です
を見て与える:https://stackoverflow.com/questionsを
別のアプローチは、直接ご自身
BooleanBinding
を作成することです/ 33185073 /子ノードの可視性の観察 – Linuslabo関連項目:[JavaFXでの複数ブール代入](https://stackoverflow.com/questions/32192963/multiple-boolean-binding-in) -javafx)。 – jewelsea