2013-02-09 20 views
5

Zastanawiam się w jaki sposób można wykorzystać fx:include w połączeniu z JavaFX Scene Builder, zatem:JavaFX Scene Builder i fx: include

Wyobraźmy mam BorderPane (plik borderpane.fxml). W środkowej sekcji chcę umieścić Label, który jednak powinien być zdefiniowany w oddzielnym pliku FXML, np. label.fxml.

Pierwszy problem z tym: Ponieważ label.fxml zostanie zintegrowany z kontenerem (BorderPane), nie potrzebuje go sam. SceneBuilder oferuje jednak tylko opcję tworzenia układów będących kontenerem?

Drugi problem: Mogę stworzyć label.fxml ręcznie, a następnie dostosować borderpane.fxml ręcznie dołączyć label.fxml. Następnie mogę załadować plik borderpane.fxml przy użyciu SceneBuilder bez żadnych problemów. Jednak kiedy już zmienić tekst etykiety i wybierz „Zapisz”, a nie label.fxml jest modyfikowany, ale zamiast borderpane.fxml jest modyfikowany tak:

# borderpane.fxml 
<fx:include source="label.fxml" text="the new label text" /> 

Nowy tekst etykiety powinny być zapisywane label.fxml, nie borderpane.fxml, co jest obecnie zrobione.

  • Czy robię coś nie tak?

  • Czy SceneBuilder nie jest przeznaczony do używania w połączeniu z fx: include?

  • Potrzebuję oddzielnych kontrolerów dla części mojego GUI, myślę, że to jest całkiem logiczne/normalne, więc ten praktyczny scenariusz użycia ma nadzieję, że w jakiś sposób jest wspierany przez SceneBuilder?

Odpowiedz

1

Nie jestem świadomy żadnej metody dodawania węzłów do wbudowanych efektów FXML za pomocą programu budującego sceny.

Można to zrobić za pomocą kodu Java. Jeśli twój borderpane.fxml zdefiniował kontroler z metodą o nazwie #setCentre w celu dodania węzła, możesz załadować plik label.fxml w kontrolerze nadrzędnym borderpane.fxml i dodać etykietę za pomocą zdefiniowanej metody.

Jedno pytanie brzmi: czy podajesz uproszczony przykład, czy faktycznie tworzysz pliki FXML dla etykiet i okienek granicy? Jeśli tak, to myślę, że to sprawi, że twój program będzie bardziej skomplikowany, niż tylko dodanie kontroli do większej kontroli.

6

Wygląda na to, że Scene Builder 2 rozwiązało oba problemy, o których Pan wspomniał.

Pierwszy (rozwiązany) problem: węzeł główny nie musi być Pane. Na przykład, może to być Label

drugie (rozwiązany) Problem: Menu File > Include > FXML... mogą być wykorzystywane w celu włączenia zewnętrznego pliku FXML. Nie można edytować dołączonego pliku. W każdym razie kliknięcie prawym przyciskiem myszy węzła w widoku Dokument spowoduje wyświetlenie pozycji menu "Edycja uwzględnionego pliku", która otworzy kolejne okno Kreatora scen dla tego pliku.

Podsumowując: Scene Builder 2 poprawnie obsługuje element fx:include.

+0

Niezłe wyjaśnienie, ale jest jeden problem: jeśli umieścisz plik fxml, nie możesz go przeciągnąć do konstruktora scen, aby umieścić go w dowolnym miejscu aplikacji! – SlimenTN