Überfordert mit Swing

J

jDennis79

Gast
Hallo Forum.

Ich habe nicht direkt eine Frage, ich muss nur mal mein Problem aufschreiben; meistens hilft es ja schon, ein Problem zu beschreiben, und vielleicht hat ja der/die ein oder andere von euch ein paar gute Tipps für mich.

Ich habe das bhv-Einsteigerseminar Java durchgearbeitet, ich habe "Java von Kopf bis Fuß" durchgearbeitet, und ich habe die Hälfte der Insel durchgearbeitet (ab der zweiten Hälfte fehlt mir in dem Buch irgendwie der "rote Faden" und der Autor verzettelt sich für mein Gefühl zu viel). Ich hatte damit auch wenig Probleme, ich habe die Konzepte verstanden und die Arbeit damit hat mir Spaß gemacht.

Mein Problem fängt an, sobald Swing ins Spiel kommt. Ich komme dabei jedes Mal (und ich habe einige Anläufe gemacht) total ins Schleudern und verzettele mich komplett. GUI-Aufbau, Listener, Klassenorganisation, SwingUtilites & Threadsicherheit, Packages, Verbindung von Logik mit GUI - mir scheint das regelmäßig zuviel zu werden und über den Kopf zu wachsen.

Selbst eine einfache GUI-Anwendung, wie beispielsweise ein Celsius-Fahrenheit-Umrechner mit zwei Textfeldern und einem Button, bereitet mir schon massive Probleme. Der übliche Tipp, Durchhaltevermögen zu zeigen und Übung, Übung, Übung hilft wenig weiter, wenn schon das simpelste Programm zur Hürde wird.

Die Tutorials im Internet helfen dabei auch nicht viel weiter, weil sie zwar einzelne Komponenten gut beschreiben, aber eben gerade nicht das Zusammenspiel von GUI und Logik, die Aufteilung der Codeteile und die Organisation der Klassen. Auch das GUI-Kapitel der Insel hat mir wenig weitergeholfen, weil es meiner Meinung nach (im Gegensatz zur ersten Hälfte des Buches) eher Referenz zu Swing-Komponenten ist als Lehrwerk.

Bei ganz simplen Einsteigerbüchern hingegen, die eher den Aufbau einer GUI-Anwendung beschreiben als einzelne Komponenten vorzustellen, habe ich wiederum das Problem, dass Dinge wie SwingUtilities gar nicht erst besprochen werden und der meiste Code in eine einzige Klasse geklatscht wird.

Ich weiß einfach nicht so recht, wo ich ansetzen soll, um mich da vernünftig "reinzuarbeiten".

Ist halbwegs verständlich, was mein Problem ist?
 

Volvagia

Top Contributor
Wenn du Probleme mit Threadsicherheit hast fang mal mit AWT an. Das handhabt sich fast genauso, ist aber von Natur aus Threadsicher. Aber du solltest sowieso erst die GUI erlernen, bevor du sie mit Threads verbindest.
Packages kannst du vergessen, das sind quasi einfach Ordner. Nicht so wichtig.

Am Besten du fängst einfach mit einen Celsius/Fahrenheit-Rechner an, und sobald du Probleme hast frag.
 

Gregorrr

Bekanntes Mitglied
Erstmal locker bleiben. Du machst dir einfach voll den Kopf, so hab ich das Gefühl. Bücher lesen sind nur Trockenübungen, wie Theorie Lernen beim Führerschein. Erst beim richtigen Programmieren macht's Klick.

Man kann sich übrigens nie 100% vernünftig rein arbeiten. Programmieren ist so komplex. Da sucht man sich ein Stück aus und bearbeitet dann. Bei Problemen muss man halt recherchieren, deshalb sind Foren ja bei Programmieren so beliebt. Man muss auch Dinge ausblenden, die zur Zeit nicht wichtig sind. Z.B. wen interessiert SwingUtilities? Benutz es erstmal einfach, es funktioniert ja. (Das ist übrigens nicht empfehlenswert, wenn man z.B. für die NASA etwas programmieren möchte, da sollte man schon ganz genau alles "versuchen" zu wissen;)) Schreibs dir auf ne To-DO-Liste, wenn Zeit ist, kannste es ja immer noch nachschlagen.

Wie steht so schön im Buch der Bücher zum Programmieren (The Art of Computer Programming, von D. Knuth): "Practice yourself, for heaven's sake, in little things; and thence proceed to greater." (Epictetus)

Oder ein Tweet von Kent Beck: "Don't try to do big things. Do little things that can grow into big things."

Übrigens hat jeder seine eigene Strategie, die für ihn am besten ist. Vielleicht musst du deine noch herausfinden. Z.B. ist es unsinnig alles "Lernen" zu wollen. Referenzen, z.B. Snippets aufbauen, wo du schnell was wiederfindest ist vielleicht eine Strategie, etc. pipapo.
 

Landei

Top Contributor
Swing ist nicht einfach. Hier ein paar (ziemlich) subjektive Tipps:
- Verstehe anonyme Klassen, das Listener-Konzept, das Model-Konzept und die verschiedenen LayoutManager, bevor du überhaupt anfängst
- Vermeide Vererbung von Swing-Komponenten, solange du kein "oberflächenmäßiges" Verhalten erweiterst. Deine Anwendung sollte z.B. kein Fenster sein, sondern eins benutzen. Von JComponent zu erben, um paintComponent überschrieben zu können, ist dagegen okay.
- Skizziere die Oberfläche, bevor du anfängst. Überlege dir, wie die Komponenten auf Größenänderungen reagieren sollen. Wähle die richtigen LayoutManager.
- Vergiss nicht, dass man Layouts auch schachteln kann. Vergiß nicht, dass es auch Komponenten mit "layoutmanagerartigem" Verhalten gibt: Box, JSplitPane
- Skizziere die Abläufe deiner Oberfläche. Wenn etwas zu kompliziert ist, suche einen einfacheren Weg. Denke dabei nicht nur an aktuell sichtbare Komponenten, auch Popup-Menüs, Dialoge oder Wizards können weiterhelfen
- Wenn du dabei nicht weiterkommst, schau dir an, wie das in ähnlichen Programmen gelöst ist
- Verwende (noch?) keine GUI-Builder, schreibe die GUI erst mal manuell
- Mache die GUI fertig, ohne die Datenanbindung. Füge notfalls Dummy-Daten ein. Teste, dass die Oberfläche wie gewünscht auf Größenänderungen reagiert
- Packe nicht zuviel Code in Listener, rufe lieber eine separate Methode auf
- Prüfe bei jedem ActionListener, ob du nicht lieber gleich eine Action verwenden solltest
- Schreibe eigene Models, wenn die Standard-Models nicht passen. Versuche nicht, das durch irgendwelche Tricks zu vermeiden.
- Verwende Open-Source-Komponenten, wenn die Swing-Komponenten nicht passen oder zu primitiv sind (z.B. Kalender, TreeTables, Wizards...)
- Und das wichtigste zum Schluss: Mach erst einmal einen großen Bogen um GridBagLayout :p
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
Beim "Verstehen" muss aber noch dazu gesagt werden, dass das nicht jedermans Sache ist. Ich z. B. kann stundenlang Tutorials lesen, und auch wenn jede Zeile einzeln erklärt werden würde wäre ich hinterher nicht gerade schlauer.

Ich versuche, wenn ich etwas nicht weiß per Google dahinter zu kommen. Wenn das nicht klappt versuche ich es selbst, wenn dann nicht frag ich.

Bei meinen ersten Programm in Java habe ich mir überlegt: Was brauche ich als erstes?
Antwort: Ein Fenster.
Ursache: Ich habe gegoogelt wie man ein Fenster anzeigt.
Wirkung: Ich habe ein Fenster angezeigt.

Überlegung: Was brauche ich als zweites?
Antwort: Bilder in dem Fenster dargestellt.
Ursache: Ich habe gegoogelt wie man Bilder in einen Fenster darstellt.
Wirkung: Es wurden Bilder im Fenster dargestellt.

usw.
So habe ich das Programm langsam aufgebaut.
Durch weitere Programme hat sich mein Wissen darüber langsam aber stetig vergrößert.

Du musst herausfinden, welche Art zu lernen dir liegt.
 

Landei

Top Contributor
Also die genannten Sachen zu "verstehen", ist nicht schwer:
- Anonyme Klassen sollte man sowieso kennen, sie sind nicht swing-spezifisch. Zusammengefaßt könnte man sagen, es sind innere Klassen zur Einmal-Verwendung und deshalb ohne Namen.
- Das Listener-Konzept ist ebenfalls einfach: Ich gebe einer Komponente einen "Umschlag" mit Instruktionen mit, was diese im Falle eines Falles tun soll. Dieser "Umschlag" ist standardisiert und nennt sich "Listener".
- Das Modell-Konzept besagt nur, dass die Daten nicht direkt in der Komponente stehen, sondern in einem Model, das von dieser gelesen und geschrieben wird. Damit hat man bessere Kontrolle über die Daten und mehr Flexibilität: Daten können erst "bei Bedarf" nachgeladen oder berechnet werden, zwei Komponenten können sich ein Model teilen, man hat freie Auswahl bei der Datenstruktur, die man im Model verwendet u.s.w.
- Was die einzelnen LayoutManager tun, sieht man schön hier: Using Layout Managers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Überfordert beim Sortieren Java Basics - Anfänger-Themen 3
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Mehrfacherfassung in Swing GUI Java Basics - Anfänger-Themen 12
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2
J XML Viewer for Swing Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
B Swing Applikation mit mehreren Klassen Java Basics - Anfänger-Themen 2
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
J Java GUI in Swing und das MVC Paradigma Java Basics - Anfänger-Themen 3
M Swing Java Basics - Anfänger-Themen 7
B Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben