Java - tworzenie GUI

Odpowiedz Nowy wątek
2011-08-02 01:06
Smigiel
0

Tworzyłem już wcześniej interfejsy graficzne w Qt oraz w javie na platformę android.
Nigdy nie miałem aż takich problemów jak teraz, korzystając z biblioteki Swing.
W jaki sposób mogę chociażby ustawić stałą wielkość obiektu JPanel?
Dlaczego funkcje setMinimumSize/setMaximumSize nie działają?
Jak mogę zrobić 2 obiekty JPanel, z których jeden zajmuje np. 30% a drugi 70% dostępnej szerokości.

Z góry dzięki za pomoc / jakieś linki.

PS. Aktualnie korzystam z biblioteki Swing i edytora WindowBuilder w eclipse, ale to dopiero początki więc jeżeli waszym zdaniem warto się na coś przerzucić to proszę pisać :]

Pozostało 580 znaków

2011-08-02 08:22
0

spróbuj setPreferedSize() - winno pomóc.
Do konkretnego ustawienia komponentów w oknie służą przecież layout Managery. Ja korzystam z groupLayout (trochę zagmatwany i sporo pisania ale da się wytrzymać). Jest jeszcze BoxLayout. Do mniej skomplikowanych menedżerów należą flowlayout gridlayout borderlayout. Opisane na stronie Oracla.

http://download.oracle.com/ja[...]ial/uiswing/layout/using.html

edytowany 1x, ostatnio: remigio, 2011-08-02 08:24

Pozostało 580 znaków

2011-08-02 12:03
Smigiel
0

Używam BoxLayout, mam 2 JPanel ustawione obok siebie.
Jak mam teraz zrobić żeby np. jeden z nich miał zawsze 100px, a drugi zajmował resztę okna?
Mogę ustawić pierwszemu preferredsize na te 100px, ale co z drugim?
Muszę dynamicznie obliczać ile ma zajmować i ustawiać preferredsize za każdym razem kiedy uzytkowanik zmienia wielkosc okna?

Pozostało 580 znaków

2011-08-02 12:15
0

PS. Aktualnie korzystam z biblioteki Swing i edytora WindowBuilder w eclipse, ale to dopiero początki więc jeżeli waszym zdaniem warto się na coś przerzucić to proszę pisać
Jasne, że warto się przerzucić, bo same biblioteki GUI Javy nie są pierwszej klasy. Jeżeli znasz Qt i Eclipse to najlepiej będzie Ci skorzystać z QtJambi. http://dev-kof.blogspot.com/2[...]lacja-qt-jambi-w-eclipse.html

Zdecydowanie odradzam QtJambi. Programy tracą wtedy na przenośności, rosną do 10MB, a przy bardziej skomplikowanych interfejsach rzucają wyjątki. Chyba że coś poprawili, to nie rzuca wyjątków. SWING jest zdecydowanie lepszy od QtJambi, a trudny nie jest. Też pisałem w Qt i przerzucenie się na Swinga trudne nie było. - Razi91 2011-08-02 14:13

Pozostało 580 znaków

2011-08-02 12:34
Smigiel
0

Zdecydowanie wolałbym to zrobić w "zwyklej" Javie.
Bez przesady, chyba da się jakoś ustalić stałą szerokość komponentu.

"zwykłej" Javie? Zatem, czym jest "niezwykła" Java? Swoją drogą to głupie, że pierw pytasz się o alternatywy, a teraz wybrzydzasz bez podawania sensownego powodu. - absent 2011-08-02 12:40
"Niezwykła" Java, to taka, która korzysta z zewnętrznych bibliotek. Trudno to zrozumieć? Poza tym podał sensowny powód: nie chce korzystać z bibliotek zewnętrznych. - bogdans 2011-08-02 13:41
Skoro tak mu bardzo zależy na ograniczaniu się to czemu się nie ograniczy to języka kompilowanego? Tam mniej zużyje zasobów. - absent 2011-08-02 14:01
Napisał "zwykłej" w cudzysłowie. Jest różnica między jednym jarem, a czterema + dll/so. Poza tym łatwiejsza dystrybucja na applety - Razi91 2011-08-02 14:15

Pozostało 580 znaków

2011-08-02 13:39
bo
0

Za mało danych by udzielić sensownej odpowiedzi:
Czy rozmiar całego okna jest stały czy też ustalany metodą pack() na podstawie rozmiarów zawartych w nim komponentów?
Ile jest komponentów w głównym oknie (dwa panele)?
Menadżerem dla okna jest BoxLayout(X_AXIS)?

Pozostało 580 znaków

2011-08-02 13:48
Smigiel
0

Czy rozmiar całego okna jest stały czy też ustalany metodą pack() na podstawie rozmiarów zawartych w nim komponentów?

Nie, użytkownik może normalnie zmieniać rozmiar okna.

Ile jest komponentów w głównym oknie (dwa panele)?

Tak, załóżmy, że dwa.

Menadżerem dla okna jest BoxLayout(X_AXIS)

Wydaje mi się, że to jest najlepsze rozwiązanie, oczywiście mogę użyć innego.

W Qt wystarczyło dać jednemu z komponentów SizePolicy: expanding i już mielibyśmy efekt o który mi chodzi.

Pozostało 580 znaków

2011-08-02 14:22
0

Ja używam edytora w NetBeansie. Jak się go umie obsługiwać, to się umie robić dobre elastyczne fragmenty interfejsów.

Tworzę komponent na panelu, wyłączam mu resizability i włączam w tym które mają sie rozszerzać.

Ewentualnie JSplitPane i ustawiasz szerokość lewego/górnego komponentu w % (tzn. w Double 0..1)

Pozostało 580 znaków

2011-08-02 16:35
Smigiel
0

W jaki sposób wyłączasz resizability komponentu?
Istnieje jakaś funkcja w stylu setResizability(boolean)?

Pozostało 580 znaków

2011-08-02 16:59
bo
0

setResizable(false)

Pozostało 580 znaków

2011-08-02 17:05
Smigiel
0

U mnie nie działa...
"The method setResizable(boolean) is undefined for the type JPanel"

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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