Mam aplikację JavaFX 2.0 z FXML. Chcę, aby komponenty (pola tekstowe, elementy składowe, układy itd.) Zmieniły się, gdy zmieni się rozmiar okna z aplikacją. Więc ...Jak powiązać zmianę rozmiaru sceny ze zmianą rozmiarów komponentów?
- Jak to jest napisane na Oracle documentation for JavaFX, aby zrobić coś takiego z kształtach, istnieje kilka szczególne właściwości do kształtów:
Podczas tworzenia aplikacji GUI z JavaFX, zauważysz, że niektóre klasy w API już implementują właściwości. Na przykład klasa
javafx.scene.shape.Rectangle
zawiera właściwości dlaarcHeight
,arcWidth
,height
,width
,x
iy
. Dla każdej z tych właściwości będą odpowiednie metody pasujące do poprzednio opisanych konwencji. . Na przykład,getArcHeight()
,setArcHeight(double)
,arcHeightProperty()
, które razem wskazać (dla obu twórców i narzędzi), które dana właściwość istnieje *
Aby dodać słuchacza do etapu muszę zrobić coś takiego:
stage.resizableProperty().addListener(new ChangeListener<Boolean>(){ @Override public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2){ throw new UnsupportedOperationException("Not supported yet."); } });
więc istnieją dwa pytania:
- Aby zrobić wiązanie, muszę dostać swój etap w klasie kontrolera. Więc - w jaki sposób mogę uzyskać etap w klasie kontrolera?
- Wygląda na to, że formanty interfejsu użytkownika nie mają żadnych właściwości width \ height, które można powiązać z czymś. A może ich nie znalazłem.
Jak mogę rozwiązać mój problem?
UPD. O programie Scene Builder dla Sergey Grinev: Kiedy używam Ctrl + K na moim komponencie (powiedz, żeby zająć cały obszar jego komponentu nadrzędnego) - wszystko jest w porządku.
Ale co, jeśli chcę powiedzieć, że mój komponent zajmuje 50% obszaru? Na przykład mam kartę z dwoma VBoxami na jej temat. Szerokość zakładki to 100px. Szerokość Vbox'a wynosi 50px dla każdego. VBox1 ma X1 = 0 i x2 = 50 i VBox2 ma X1 = 50 i X2 = 100. Następnie zmieniam rozmiar okna za pomocą aplikacji JavaFX. Teraz mam zakładkę Szerokość = 200px. Ale moi tagach vbox szerokości są nadal = 50px: VBox1 ma x1 = 0 i x2 = 50 i VBox2 ma X1 = 150 i x2 = 200. I muszę im być VBox1 x1 = 0 i x2 = 100 i VBox2 x1 = 100 i x2 = 200. Gdzie wartości x1 i x2 są współrzędnymi narożników VBoxes.
W jaki sposób Scene Builder może mi pomóc w tej sytuacji?
Mam odpowiedział na Twój komentarz jako aktualizacja na pytanie, jak to było z postaciami. –
proszę spojrzeć na aktualizację, proszę. –
Typo - GripPane – Avik