Jak dynamicznie ładować zawartość na karty JavaFX?

Mam GUI, wykonane przy użyciu JavaFX z FXML.

Ten GUI ma wiele komponentów i nie wszystkie są potrzebne w jednym momencie.

Na przykład, wyobraź sobie GUI, który otrzymuje z części serwera listę miast. Każde miasto jest opisane na własnej karcie (i opisane wieloma węzłami). Zestaw miast zawiera 30 elementów.

Po uruchomieniu GUI prosi serwer o listę miast. Serwer zwraca losowy „podzbiór” miast (może to być Moskwa + Ryga + Nowy Jork lub St.Petersburg + Tokio lub tylko Amsterdam lub wszystkie 30 miast w jednym zestawie).

Więc. Nie muszę mieć wszystkich 30 zakładek w moim drzewie węzłów (przypuszczam, że po prostu „zjedzą” pamięć i nic więcej).

Chcę zarządzać ilością kart, które mam w każdym momencie w moim interfejsie GUI.

Pierwsze proste rozwiązanie, jakie mam, jest następujące:

Utwórz plik FXML zawierający składniki dla wszystkich miastPodczas inicjalizacji w klasie kontrolera usuń niepotrzebne karty.

Mam problemy z tym rozwiązaniem. Po pierwsze, nie wiem, czytabPane.getTabs().remove(index) naprawdę usuwa kartę i całą jej zawartość z drzewa węzłów. Po drugie, wszystkie niepotrzebne karty zostaną zainicjowane, zanim zostaną usunięte, więc i tak będą korzystać z pamięci i zasobów, a mój GUI może być wolniejszy niż musi.

Drugie rozwiązanie, jakie mam, to:

Zrób dużo FXML. Jeden dla wszystkich miast, jeden dla każdego miasta i jeden dla każdej kombinacji miast.

Ale będzie wiele możliwości dla FXML, więc to rozwiązanie również nie jest przydatne.

Rozwiązanie, o którym marzę:

Utwórz plik FXML dla każdego miasta i jeden dla aplikacji głównej z kartami.W razie potrzeby dynamicznie ładuj zawartość pliku FXML do karty.

Więc jeśli ktoś ma jakieś pomysły na to zadanie lub zna rozwiązanie, pomóż mi z tym ...

questionAnswers(1)

yourAnswerToTheQuestion