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/

Odpowiedź listem elektroniczym