Swing Komplexe GUI

billinares

Mitglied
Hallo

Ich muss zum ersten Mal eine etwas komplexe GUI programmieren. Die Aufgabe ist nicht schwer. Es geht bloss darum ein Haufen Information darzustellen. Ich musste eine kleine Demo-Version für den Kunden schreiben, um eine Idee vom Endergebniss zu vermitteln.

Ich bin nun Mal Anfänger und kenne nur die Basics von Swing. Ich habe mir also eine graphische Anwendung besorgt (Jigloo) und die verschiedenen LEDs und Schalter an die gewüschte Stelle zu plazieren versucht. Nach vielen Stunden ist es mir tatsächlich gelungen, die GUI zu malen. Und obwohl der Kunde mit dem Resultat zufrieden war, weiss ich dass ich das richtige Programm anders schreiben muss.

Das Plazieren von Komponenten, zum Beispiel. Ich musste zahlose Panes miteinander verschachteln, um das richtige Layout zu erziehlen. Der vom Tool erzeugte Code war dann sehr gross; es wäre sehr mühsam, die Stellen für die verschiedenen Kontrollen darin zu finden. Ich könnte die Applikation auch so schreiben, ich weiss aber, dass dies nicht der richtige weg ist.

Wo kann ich Anleitungen finden, um die Aufgabe besser zu lösen (Bücher, Website)?

Danke
 

Kr0e

Gesperrter Benutzer
Guten morgen!

Also zuerstmal würde ich dir NetBeans 6.8 empfehlen. Ich finde den GUI-Editor Matisse (Das ist der bei NetBeans) um einiges intuitiver als Jigloo. Außerdem ist es einfacher zu konfigurieren. Einfach NetBeans druff und du hsat alles was du brauchst.

Nun zu deinem Problem:

Das "Ineinanderschachteln" ist bei Swing ganz normal. Allerdings kann mans natürlich übertreiben. Du solltest möglicsht alle (viele verschiedene) LayoutManager nutzen und nicht z.b. nur einen und damit dann alles "nachstellen". Ich weiß jetzt nicht ob das bei dir der Fall ist, aber es ist schonmal ein wichtiger Punkt... Wenn du nicht weißt welche verschiedenen Layouts es gibt, such bei google einfahc nach "Java LayoutManager" oder so ... Da findet man sehr schnell was...

Gruß Chris
 

Atze

Top Contributor
ja, ich glaub um das verschachteln kommt man auch in gewissem maße nicht rum. ob das jetzt ein wysiwyg-editor für dich übernimmt und du die entsprechenden stellen anpassen musst, oder du es selber zusammenbaust, kommt irgendwie auf selbe raus. vom aufbau her sind beide systeme imho gleich. entscheide du, womit du besser zurecht kommst.

zur ide-diskussion:
ist wahrscheinlich wieder glaubenssache und man kann da wieder ne riesige diskussion aufziehen, aber ich finde, man sollte sich für eine ide entscheiden, mit der man sich dann auch ausführlichbeschäftigt und deren stärken zu seinen macht. nur die ide zu wechseln, weil da "ein editor" mal geeigneter ist finde ich nicht ratsam, muss aber jeder selber wissen. wenn du mit eclipse schon arbeitest, kommst du sicher auch irgendwann besser mit jigloo klar, dann würd ich dabei bleiben. meine meinung :)
 

hansmueller

Bekanntes Mitglied
Hallo,

ich weiß zwar nicht wie kompliziert deine Gui ist, aber ich habe bei etwas komplizierten Darstellungen mit dem "GroupLayout"-Manager bisher immer gute Ergebnisse erzielt.
Der "GroupLayout"-Manager ist für einen Anfänger vielleicht nicht ganz so geeignet, da er etwas kompliziert ist, aber man braucht sich dafür nicht mit verschachtelten Panels und Layoutmanagern herumschlagen.

MfG
hansmueller
 

billinares

Mitglied
Danke für die tollen Tips.

Nur noch zum zweiten Teil meiner Frage: wie kann man das von diesen graphischen Tools erzeugte Code etwas object oriented-artig erzwingen? Gibt es keine Alternative zur grossen File mit hunderten von Pane- und Button-Konstruktoren, etc. wo dann die Topologie der GUI erstellt wird?

Ich habe zum Beispiel eine graphische Struktur mit ein Paar LEDs und Buttons, welche dann 30 Mal in der Oberfläche vorkommt. Das schreit nach einer Klasse, der ich bloss die Position im Fenster übergeben müsste. Ich bin sicher es gibt ein Pattern um so was zu machen.

Danke
 

Michael...

Top Contributor
Spätestens in so einem Fall würde ich auf GUI Editoren verzichten.
Gibt's denn eine gewisse Regel nach der die Komponenten angeordnet werden sollen? Es gibt ja schliesslich diverse LayoutManager und im "schlimmsten" Fall kann man sich ja auch selbst einen schreiben.
Und nur der Vollständigkeit habler, man kann auch ohne LayoutManager mit absoluter Positionierung arbeiten - wobei man dann sehr verzweilfelt sein sollte.
Hast Du eventuell eine Skizze wie das Layout aussehen soll, dann könnte man eventuell etwas konkreteres empfehlen.
 

Hootch

Mitglied
Die GUI Editoren Jigloo und Matisse machen ihre Aufgabe ganz gut und nehmen eine Menge Arbeit ab. Sie sollten die GUI Panel bauen und das Wegwerf Code dienen, wenn der GUI Editor was taugt. Mein Hauptproblem bei komplexen Swing Applikationen sind weniger die verschachtelten Komponenten, sondern vielmehr der Speicherverbrauch bei "malen" der GUI.

Wenn ich GUI + Panels render und diese auch im Speicher vorhalte, so steigt der Speicher trotzdem immens wenn der Benutzer ein Resize oder Move von Panels vornimmt. Da wegen der repaint() Methode die Elemente neu gezeichnet werden. Dies führt oft zu Performance Problemen auf schwächeren Rechnern ...

Hierfür hab ich noch keine gute Antwort gefunden, ausser gute Sun Doku, die mit kompliziertem Swing Repaint Bla Code hantiert um diese Krücke bestmöglich zu umschiffen. Hat hier jemand eine Lösung oder einen guten Weg?!

Verweis auf Doku oder ein OpenSource Projekt als Quelle wäre sehr hilfreich :)

Gruss
Hootch
 

Ähnliche Java Themen

Neue Themen


Oben