GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs...

29
GUI Programmierung ProgWerkstatt | 7. Dezember 2006 Tipps & Tricks

Transcript of GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs...

Page 1: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

GUI ProgrammierungProgWerkstatt | 7. Dezember 2006 Tipps & Tricks

Page 2: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 2 GUI Programmierung

Überblick

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 3: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 3 GUI Programmierung Motivation

GUI Programmierung

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 4: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 4 GUI Programmierung Motivation

Motivation

I Aufzeigen von MöglichkeitenI Tipps & Tricks für effizienteres ArbeitenI Mögliche Fehlerquellen vermeidenI Hilfreiche Praxisbeispiele

Page 5: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 5 GUI Programmierung Grundlagen

GUI Programmierung

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 6: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 6 GUI Programmierung Grundlagen Java Coding Conventions

Warum Coding Conventions?

I Bessere Wartbarkeit des CodesI 8 Leute im TeamI Code verständlicher für die anderenI Siehe auch:

http://java.sun.com/docs/codeconv/

Page 7: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 7 GUI Programmierung Grundlagen Java Coding Conventions

Wo steht Was?

1. Klassendeklaration2. Variablen

I Zuerst die statischen VariablenI Reihenfolge jeweils public, protected, private

3. Konstruktoren4. Methoden

Page 8: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 8 GUI Programmierung Grundlagen Java Coding Conventions

Was nenne ich Wie?

I Klassen→ Substantive (beginnen mit Großbuchstabe)public class Beispiel { ..

I Methoden→ Verben (beginnen mit Kleinbuchstabe)private void machWas() { ..

I VariablenI Möglichst keine Ein-Buchstaben-Variablen, falls doch:I i,j,k,m,n für intI c,d,e für charI Konstanten in Großbuchstaben, Wörter getrennt durch ’_’

Page 9: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 9 GUI Programmierung Grundlagen Java Coding Conventions

Leerzeichen und LeerzeilenI Leerzeilen

I Zwischen MethodenI Zwischen Variablen und StatementsI Vor Kommentaren

I LeerzeichenI Beispiel:a + b = c;String s = "Irgendwas " + a + " noch etwas";

I Aber:a++;

I Vor Castsa = (int) b;

Page 10: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 10 GUI Programmierung Grundlagen Javadoc Comments

Kommentare allgemein

I Am Anfang jeder DateiI Vor KlassendeklarationenI Vor MethodenI Evtl. vor Variablen

Page 11: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 11 GUI Programmierung Grundlagen Javadoc Comments

Verschiedene Arten von Kommentaren

/* single-line comment */

a + b = c; // end-of-line comment

/** block comment*/

/*** javadoc comment*/

Page 12: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 12 GUI Programmierung Grundlagen Javadoc Comments

Aufbau

I Tags@author Name des Autors@param Name des Parameters Beschreibung@return Beschreibung des Rückgabewerts

I FormatierungenI Einfache HTML-Elemente können zur Formatiierung benutzt werden

(<p>,<ul>,<li>,...)I <code></code>-Style für z.B. Package- oder Klassennamen

I Erster Satz dient als Zusammenfassung

Page 13: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 13 GUI Programmierung Grundlagen GroupLayout unter NetBeans

GroupLayout

I Neues LayoutprinzipI Erstmals verwendet in Netbeans (Matisse GUI-Builder)I In Java SE 6 enthaltenI In der Zwischenzeit auch von anderen Gui-Buildern unterstützt

I Jigloo http://www.cloudgarden.com/jigloo/I Windowbuilder Pro http://windowbuilderpro.com/

I Tutorial: http://www.netbeans.org/kb/55/quickstart-gui.html

Page 14: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 14 GUI Programmierung OpenOffice & HSQL

GUI Programmierung

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 15: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 15 GUI Programmierung OpenOffice & HSQL

Kommunikation mit OpenOffice Base über HSQL

LIVEDEMO

Page 16: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 16 GUI Programmierung Tipps & Tricks zu GUIs

GUI Programmierung

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 17: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 17 GUI Programmierung Tipps & Tricks zu GUIs Java Events

Java Event ModelI 2 verschiedene Eventkategorien

I low-level Events (Tastatur-/Mauseingabe)I semantische Events (z.B. actionPerformed)

I Semantische Events müssen nicht zwangsläufig durch low-level Eventsausgelöst werden (z.B. TableModelEvent)

I Wenn möglich semantische Events verwendenI sichererI komfortabler

Page 18: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 18 GUI Programmierung Tipps & Tricks zu GUIs Java Events

Java Event Handling

I 3 Arten von ThreadsI Initial threads (Initialisierung/Systemstart)I Event-Dispatch thread (Benutzerinteraktion)I Worker threads (hintergründige Prozessabarbeitung)

I Event-Dispatch thread arbeitet alle Events sequentiell abI Verarbeitet auch paint-RoutinenI EventListener-Code sollte schnell ablaufen

I Aufwendige Berechnungen in Worker threads auslagernI javax.swing.SwingUtilities

invokeLater(Runnable task)I javax.swing.SwingWorker (ab JDK 1.6)

doInBackground(), run()

Page 19: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 19 GUI Programmierung Tipps & Tricks zu GUIs Java Events

Adapterklassen

I Spart überflüssige SchreibarbeitI Bläht den Code nicht unnötig aufI Übersicht der wichtigsten EventListener & Adapterklassen:

http://java.sun.com/docs/books/tutorial/uiswing/events/api.html

Page 20: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 20 GUI Programmierung Tipps & Tricks zu GUIs Java Events

Adapterklassen - Beispiel

public class MyClass implements MouseListener {...someObject.addMouseListener(this);.../* Empty method definitions. */public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mouseClicked(MouseEvent e) {//Event listener implementation...

}}

public class MyClass extends MouseAdapter {...someObject.addMouseListener(this);...

public void mouseClicked(MouseEvent e) {...//Event listener implementation}

}

Page 21: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 21 GUI Programmierung Tipps & Tricks zu GUIs Java Observer

Java Observer

LIVEDEMO

Page 22: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene

Eingabeüberprüfung auf GUI-Ebene

I Eingabeüberprüfung sollte wenn möglich in der GUI stattfindenI Erspart komplizierte AbfrageroutienenI Unzulässige Eingabemöglichkeiten sind direkt sichtbar

I 2 Heransgehenweisen möglich1. Überprüfung im Nachhinein

I InputVerifierNur zulässige Eingaben erlauben den Focus weiterzugeben

2. Überprüfung während der EingabeI JFormattedTextField

Mittels MaskFormatter wird eine eindeutige Eingabemaske vorgegebenI DocumentFilter

Nur zulässige Eingaben werden übernommen

Page 23: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 23 GUI Programmierung Tipps & Tricks zu GUIs JTree Model

JTree Model

LIVEDEMO

Page 24: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 24 GUI Programmierung Arbeiten mit Versionskontrolle

GUI Programmierung

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 25: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 25 GUI Programmierung Arbeiten mit Versionskontrolle

CVS & SVNI CVS

I WinCVSI in Eclipse und Netbeans bereits integriert

I SVNI TortoiseSVN (Shell-Integrierung von SVN-Kommandos)http://tortoisesvn.tigris.org/

I SubClipse (SVN Plug-in für Eclipse)http://subclipse.tigris.org/

I Subversion for NetBeanshttp://subversion.netbeans.org/

Page 26: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 26 GUI Programmierung Arbeiten mit Versionskontrolle

Arbeiten mit SVNI Genereller Arbeitszyklus

1. Update2. evtl. Konflikte bereinigen3. Bearbeiten4. Commit (immer mit sinnvoller LogMessage)

I Repository sollte folgende Unterverzeichnisse enthaltentrunk Für alle Dateien im Hauptentwicklungszweig

branches Für abzweigende EntwicklungenI Abzweigungen können mittels Branch erstellt werdenI Merge führt verschiedene Zweige wieder zusammen

Page 27: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 27 GUI Programmierung Zusammenfassung

GUI Programmierung

1 Motivation

2 GrundlagenJava Coding ConventionsJavadoc CommentsGroupLayout unter NetBeans

3 OpenOffice & HSQL

4 Tipps & Tricks zu GUIsJava EventsJava ObserverEingabeüberprüfung auf GUI-EbeneJTree Model

5 Arbeiten mit Versionskontrolle

6 Zusammenfassung

Page 28: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 28 GUI Programmierung Zusammenfassung

Zusammenfassung

I Beispielcode online verfügbarI Für Fragen stehen wir auch über Weihnachten [email protected] zur Verfügung

Page 29: GUI Programmierung - Tipps & Tricks - Ulm · Seite 22 GUI Programmierung Tipps & Tricks zu GUIs Eingabeüberprüfung auf GUI-Ebene Eingabeüberprüfung auf GUI-Ebene I Eingabeüberprüfung

Seite 29 GUI Programmierung Zusammenfassung

Heute ist nicht alle Tage,wir kommen wieder keine Frage.