JavaFX と FXML を使用して作成した GUI があります。
この GUI には多くのコンポーネントがあり、それらすべてが一度に必要になるわけではありません。
たとえば、サーバー パーツから都市のリストを受け取る GUI を想像してみてください。各都市は独自のタブで説明されています (そして多くのノードで説明されています)。都市のセットには 30 の要素が含まれています。
GUI が起動されると、サーバーに都市のリストを要求します。サーバーは都市のランダムな「サブセット」を返します (つまり、モスクワ + リガ + ニューヨーク、サンクトペテルブルク + 東京、アムステルダムのみ、または 30 都市すべてを 1 つのセットにすることができます)。
そう。ノード ツリーに 30 個のタブすべてを含める必要はありません (メモリを「食べる」だけで、それ以上のものは何もないと思います)。
GUI の各時点でのタブの数を管理したいと考えています。
私が持っている最初の簡単な解決策は次のとおりです。
- すべての都市のコンポーネントを含む FXML ファイルを作成します
- コントローラー クラスでの初期化中に、不要なタブを削除します。
このソリューションには問題があります。tabPane.getTabs().remove(index)
まず、タブとそのすべてのコンテンツをノード ツリーから本当に削除するかどうかはわかりません。第 2 に、不要なタブはすべて削除される前に初期化されるため、とにかくメモリとリソースを使用し、GUI が必要以上に遅くなる可能性があります。
私が持っている2番目の解決策は次のとおりです。
- 多くの FXML を作成します。すべての都市に 1 つ、都市ごとに 1 つ、都市の組み合わせごとに 1 つ。
しかし、多くの FXML への道があるため、このソリューションも役に立ちません。
私が夢見る解決策:
- 都市ごとに 1 つの FXML ファイルを作成し、タブ付きのメイン アプリ用に 1 つの FXML ファイルを作成します。
- 必要に応じて、FXML シティ ファイルのコンテンツを動的にタブに読み込みます。
したがって、誰かがこのタスクに関するアイデアを持っているか、解決策を知っている場合は、それを手伝ってください...