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

[SWING] Statyczna wysokość, dynamiczna szerokość (BoxLayout?)
KB
  • Rejestracja: dni
  • Ostatnio: dni
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ę!

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
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).

KB
  • Rejestracja: dni
  • Ostatnio: dni
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

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
0

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

KB
  • Rejestracja: dni
  • Ostatnio: dni
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?

C4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

Może GridBagLayout? Powinien cię zadowolić.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.