Marcin Kawelski wrote:
Znacie jakiś przyjemny edytor
wizualny do swinga? Może coś do eclipse...
Zasadniczy zagadnienie z GUI w javie, to zrozumienie dlaczego nie
powinno się stosować absolutnego pozycjonowania elementów. Oczywiście
można to zrobić, ale wystarczy, że włączymy potem aplikację np. na macu,
gdzie są inne czcionki i widgety i elementy GUI zaczynają na siebie
zachodzić. Dlatego stosuje się tzw. LayoutManagery. W tej chwili
graficzne narzędzia do projektowania GUI swinga potrafią je wykorzystać,
a najciekawszą propozycją jest chyba matisse dołączany do netbeans,
gdzie ustawia się widgety względem guidelines (np. względem linii
podstawy textu).
http://testwww.netbeans.org/kb/41/flash-matisse.html
Zdaje się, że są też pewne możliwości wykorzystania matisse w eclipse.
Ja akurat jestem zwolennikiem podejścia, w którym nie używa się
graficznych narzędzi do projektowania GUI. :) Akurat w javie to jest
bardzo łatwe do osiągnięcia (o ile nie chodzi o setki formularzy), a są
z tego potem liczne zalety - brak kodu generowanego, lepszy obiektowy
design, możliwości refactoringu, mniejsza ilość kodu, itd. Metodologia
jest mnie więcej taka. Trzeba poznać możliwości poszczególnych
LayoutManagers. W praktyce większość rzeczy da się zrobić przez złożenie
kilku BorderLayout + np. GridBagLayout. Najlepiej "zchodzić" od ogółu do
szczegółu. Np. chcemy zrobić coś jak web browser, czyli pasek adresu na
górze, a wyświetlany text na dole (ale wykorzystujący maksymalnie
dostępny space):
private JPanel newMainPanel() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(newUrlPanel(), BorderLayout.NORTH);
panel.add(new JTextArea(), BorderLayout.CENTER);
}
private JPanel newUrlPanel() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JLabel("URL:"), BorderLayout.WEST);
panel.add(new JTextField(), BorderLayout.CENTER);
panel.add(new JButton("Go"), BorderLayout.EAST);
}
Jeśli jesteś zainteresowany, to mogę Ci przesłać przykładowe kody
"polemiczne" w stosunku do ZoneLayout:
http://www.zonelayout.com/comparison.php
A stosujące "tradycyjne" javowe podejście. Właściwie to już dawno miałem
puścić wpis na blogu na ten temat. Może dziś wieczorem: :)
http://jroller.com/page/morisil
--
"Meaning is differential not referential"
Kazimierz Pogoda
Nordic Consulting & Development Company http://www.ncdc.pl/