Swing: Daten prüfen - We make Java look good and work well

39
Swing: Daten prüfen Karsten Lentzsch

Transcript of Swing: Daten prüfen - We make Java look good and work well

Page 1: Swing: Daten prüfen - We make Java look good and work well

Swing: Daten prüfen

Karsten Lentzsch

Page 2: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Ziel

Ansätze kennenlernen

wie man in Swing

Fachdaten prüfen kann

Lösungen bewerten können

Page 3: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Vorstellung

Ich baue Swing-Anwendungen,

die viele Leute elegant finden

arbeite seit 1990 mit Objekten

helfe Anderen über und unter der Haube

biete Bibliotheken, die Swing ergänzen

biete Swing-Beispiele zu Architekturen

und schreibe über Desktop-Themen

Page 4: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Gliederung

Einleitung

Grundlagen

Wer kann prüfen?

Wann und wie prüfen?

Wie anzeigen?

Erfahrungsbericht

Page 5: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

I - Einleitung

Page 6: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Swing-Bausteine

JRE / Swing

Panels

Laufzeitumgebung

Grundbausteine

Anwendungsrahmen

Hilfsbausteine

Prüfen

Anwendungen

BindenGestalten

Anwendung 1

Aussehen

Komponenten, Anwendungsverwaltung, etc.

Utils Hilfe Drucken

Anwendung 2

Page 7: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Swing-Bausteine

JRE / Swing

Panels

Laufzeitumgebung

Grundbausteine

Anwendungsrahmen

Hilfsbausteine

Prüfen

Anwendungen

BindenGestalten

Anwendung 1

Aussehen

Komponenten, Anwendungsverwaltung, etc.

Utils Hilfe Drucken

Anwendung 2

Page 8: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Fragen

Worum geht's bei der Datenprüfung?

Wer kann und soll Daten prüfen?

Wann kann ich prüfen?

Wie schreibe ich den Prüfcode?

Wo zeige ich Prüfergebnisse?

Wie markiere ich ungültige Eingaben?

Wie weise ich hin auf gültige Werte?

Page 9: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

II - Grundlagen

Was brauche ich, um Daten zu prüfen?

Page 10: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Aufbau

Jemand kann prüfen - Validator

Er liefert ein Ergebnis - ValidationResult

Das besteht aus ValidationMessages

Severity zeigt den Schweregrad an

ValidationResultModel meldet Änderungen

ValidationComponentUtils markiert Views

ValidationResultViewFactory liefert Views

Page 11: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Prüfrahmenwerk

Validatorerzeugt

hält

ValidationResultModelView

ValidationResult

Severity

ValidationMessage

besteht aus

hat

beobachtet

Page 12: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Entwurfsziele

Arbeitet mit Standard-Swing-Komponenten

Arbeitet mit eigenen Komponenten

Braucht keine speziellen Komponenten

Braucht keine speziellen Panels

Passt zu verschiedenen Datenbindestilen

Passt zu verschiedenen Prüfstilen

Ist erweiterbar

Page 13: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Was bietet JGoodies Validation?

Implementiert den vorgestellten Ansatz

Ist allgemein gehalten

Braucht keine anderen Bibliotheken

Kann binär genutzt werden

Kann als Grundlage dienen für eigene Validierungslösungen

Page 14: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

III – Wer?

Wer prüft wen?

Page 15: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Client und Server

Zustand

Zustands-änderungen

Anzeigecode

Client

Server

Page 16: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

PresentationModel

3-Schichten-Client-Architektur

Fachobjekt

Präsentation

Fachschicht

ValueModelModellschicht

Fachobjekt

Fachobjekt

SelectionInListAction

JTextField JButton JTable

Page 17: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

Fachobjekt prüft

aBook

Präsentation

Fachschicht

ValueModelModellschicht

ListModelAction

JTextField JButton JTable

Prüfcode

Validatorimplements

Page 18: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

Validator zu Fachobjekt

aBook

Präsentation

ValueModelModellschicht

ListModelAction

JTextField JButton JTable

BookValidator Validatorimplements

Ich favorisiere diesen Ansatz

Page 19: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

PresentationModel prüft

aBook

Präsentation

Fachschicht

ValueModel ListModelAction

JTextField JButton JTable

Prüfcode Validator

implements

Page 20: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

Validator zu Module

aBook

Präsentation

ValueModel ListModelAction

JTextField JButton JTable

BookModel-Validator

Validator

implements

Page 21: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookPanel

BookModel

Präsentation prüft

aBook

Modellschicht

Fachschicht

ValueModel ListModelAction

JTextField JButton JTable

PrüfcodeValidator

implements

Page 22: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

BookModel

View filtert ungültige Daten

aBook

Modellschicht

Fachschicht

ValueModel ListModelAction

JFormattedTextField JTable

Formatter

Präsentation

Page 23: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

IV – Wann?

Wann prüfe ich? Wer löst das aus?

Page 24: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Prüfzeitpunkte

Zeichen getippt (key typed)

Fokus gewechselt (Focus lost)

Eingabe übernehmen (OK/Apply)

Daten speichern/drucken/senden

Siehe Beispiele in der Validation Demo

Page 25: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Beispielanwendung:

JGoodies Validation DemoAufgaben und Ansätze zur Datenprüfung

www.JGoodies.com/freeware/validationdemo

Page 26: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface DesignWarnzeichen überlagern Komponenten

Page 27: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

V – Wie anzeigen?

Wie kann ich Prüfergebnisse anzeigenund auf ungültige Eingaben hinweisen?

Page 28: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Prüfergebnisanzeigen

Einzelnes Label mit Prüftext und Warn-Icon

TextArea für mehrere Prüfergebnistexte

JList/JTable für mehrere Ergebnisse

Überlagerter, halb-transparenter Text

Siehe Beispiele in der Validation Demo

Page 29: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Ungültige Eingaben markieren

Textfeldhintergrund

Komponentenrahmen

Icon schwebt über Komponente

Transparenter Text schwebt neben Komp.

Siehe Beispiele in der Validation Demo

Page 30: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

VI - Erfahrungsbericht

Wie funktioniert dieser Prüfstil im Alltag?

Page 31: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Allgemeines

Jakarta Commons nutzen

Möglichst auf ungepufferten Werten prüfen

Eigene Validatoren schreiben, nicht die Fachobjekte oder Modelle prüfen lassen

In der Fachschicht prüfen (wenn's geht)

Meide Präsentationsprüfungen, aber nutze Filter (JFormattedTextField)

Page 32: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Wo steht JGoodies Validation?

Architektur ist stabil seit Dezember 2003

Keine Fehler oder Probleme bekannt

Tutorial und Demo vorhanden

Wenige vordefinierte Prüfregeln

Page 33: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Schluss

Zusammenfassung, Referenzen, Literatur

Page 34: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Zusammenfassung

Wir haben Prüfaufgaben identifiziert und

gelernt, wer, wann, wie prüfen kann und wie

man Prüfergebnisse anzeigen kann.

Page 35: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

JGoodies Swing Suite

JRE / Swing

Convenience-Quelltexte

Laufzeitumgebung

Grundbausteine

Anwendungsrahmen

Hilfsbausteine

Validation

Anwendungen

BindingForms

Beispiel 1

Looks

User Interface Framework (UIF)

Beispiel 2 Beispiel n

Page 36: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Referenzen I

JGoodies Validation validation.dev.java.net

JGoodies-Artikel www.JGoodies.com/articles/

JGoodies-Demos www.JGoodies.com/freeware/

Page 37: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Referenzen II

Oracle's JClient und ADF otn.oracle.com/, nach 'JClient' suchen

Spring Rich Client Project www.springframework.org/spring-rcp.html

JDNC (Java Desktop Network Components) jdnc.dev.java.net

Page 38: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Fragen und Anworten

Page 39: Swing: Daten prüfen - We make Java look good and work well

:: JGOODIES :: :: JGOODIES :: Java User Interface DesignJava User Interface Design

Ende

Hoffentlich hilft‘s!

Viel Erfolg!

Karsten Lentzsch