[SWING] Statyczna wysokość, dynamiczna szerokość (BoxLayout?)

0

Cześć,

męczę się od paru godzin z takim problemem. Mam trzy bloki. Wszystkie mają zajmować całą szerokość okna, którego rozmiar może być dynamicznie zmieniany, natomiast dwa z nich mają mieć stałą wysokość (te na górze). Myślałem nad BoxLayout, jednakże tam - wygląda na to - nie da się ustawić dynamicznej szerokości jeśli chcemy statyczną wysokość... czyli nie mogę nawet ustawić stosunku a co dopiero taki niejednorodny stosunek wysokości. Jeśli chodzi o Bag, to tam da się łatwo zrobić stosunek statyczny, nie da się dynamicznie (czyli jakby 50px pierwszy komponent, 150px drugi, a trzeci reszta).

Dziękuję!

0

Wyłącz może menadżera, do okna podepnij ComponentListenera i w jego metodzie componentResized wyliczaj i ustawiaj rozmiary bloków.
Możesz też napisać własnego menadżera, który spełni wymagania (nie jest to trudne).

0

Czyli nie ma takiego natywnego rozwiązania, tak? To w sumie dziwne, bo przecież przypadek wydaje się być dość powszechny... no ale jeśli nie ma, to napiszę swojego faktycznie. Pewnie jest już coś takiego w internecie, ale nie wiem jak szukać.

Czyli chodziłoby o napisanie takiego czegoś, tak?
http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/CustomLayoutDemoProject/src/layout/DiagonalLayout.java

Mogłoby to być jednak też rozwiązane poprzez zrobienie normalnych grid layoutów, tzn. north + center a w north zagnieżdżony north + center następny, nie tak? :)

Dziękuję i pozdrawiam,
Grzegorz

0

Pomyśl o zastosowaniu SpringLayout z ustawieniami odległości dla górnych/dolnych krawędzi.

0

W sumie to przemyślałem sobie to, i może się uda zrobić to po prostu na 2xtabbed pane. Wtedy może dam radę to zrobić znacznie prościej? Tzn. jeden z nich ma mieć stałą wysokość, drugi zmienną. Wtedy po prostu BorderLayout?

0

Może GridBagLayout? Powinien cię zadowolić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1