Home



Home | Consulting | Development | Services & NetSolutions | Produkte | News | Unternehmen | Kontakt



Home

Knowledge Flash
Nachrichten
Publikationen

 

Formulardaten editieren in einer JTextPane

Formulare - JavaBeans

Für das Editieren und die Validierung von Formulardaten, die die Nutzer einer bestimmten Software eingeben müssen, existieren bereits verschiedene Frameworks - unter anderem das in unserem Hause entstandene JavaBeansFramework.

Alle diese bestehenden Lösungen haben gemeinsam, daß die Anzahl der Komponenten in der GUI mit der Anzahl der Daten im Formular (Properties in der JavaBean) steigt. Das kann bei umfangreichen Formularen unter Umständen zu Performance-Engpässen führen.

Daher entstand das hier vorgestellte Framework als Alternative. Die Studie versucht, unabhängig von der Anzahl der Formulardaten die GUI zur Eingabe mit einer Komponente abzubilden.

JTextPane-Erweiterungen

Die Komponente zur Eingabe der Daten ist eine erweiterte JTextPane. Die JTextPane stelllt das Formular wie folgt dar: Pro Datum des Formulars (Property in JavaBeans) ist eine Zeile verfügbar. Links steht die Bezeichnung (das Label, der Name,...) des Datums gefolgt von einem Doppelpunkt, rechts daneben dann der Inhalt als Stringrepräsentation. Damit können alle Typen als Typen in einem Formular verwendet werden, die über einen PropertyEditor verfügen, da die entsprechenden Methoden dieser Klasse zur Erzeugung und zum Parsen der Stringrepräsentation verwendet werden.

Die Erweiterungen an der JTextPane beziehen sich auf drei Aspekte:

Navigation

Der Cursor in der JEditPane kann nur innerhalb der Werte positioniert werden. Wird die Positionierung innerhalb eines Labels versucht, wird der Cursor an die nächstliegende Stelle in einem Wert positioniert. Das betrifft die Positionierung mit Maus und Tastatur.

Highlighting
Die Darstellung des Textes in der JTextPane wird angepaßt - abhängig davon, ob Labels oder Inhalte des Formulars dargestellt werden, wird die benutzte Schrift variiert. Wird die eingebaute Validierung benutzt, werden fehlerhafte Eingaben durch eine Hervorhebung in der Darstellung der zugehörigen Labels hervorgehoben.
Actions
Die einzige Action, die angepaßt wurde, ist die für die ENTER-Taste. Diese erzeugt keinen Zeilenumbruch (und damit eine neue Zeile) mehr, sondern positioniert den Cursor einfach am Anfang der nächsten Zeile.

Unterstützte Metadaten

Da JavaBeans zur Darstellung der Formulare benutzt werden, benutzen wir die Reflection-API zur Ermittlung der Properties. Die Properties werden in der Reihenfolge, wie sie von der Reflection-API geliefert werden, im Formular dargestellt. Diese Tatsache gilt mit zwei Ausnahmen:

  • Properties, deren preferred-Eigenschaft den Wert true hat, werden vor denjenigen einsortiert, bei denen das nicht so ist.
  • Properties, deren hidden-Eigenschaft den Wert true hat, werden nicht mit in das Formular aufgenommen und damit vor dem Nutzer verborgen.

Validierung

Es kann die Validierung der eingegebenen Daten erfolgen. Daten, bei denen die Validierung fehlschlägt, werden durch eine entsprechende visuelle Hervorhebung ihrer Labels gekennzeichnet. Weiterhin bietet diese Komponente ein Panel an, das zum Beispiel als RowHeaderView einer JScrollPane eingesetzt werden kann. Dieses zeigt vor jeder Zeile, in der die Validierung fehlschlägt, ein entsprechendes Icon, dessen ToolTip einen aussagekräftigen Text zur Ursache der fehlgeschlagenen Validierung zeigt.

Demo

Wenn Sie Java WebStart installiert haben, können Sie sich eine Demo ansehen:

Ausblick

Properties, die nur lesbar sind, dürfen in der JTextPane nicht editierbar sein. Dies ist momentan noch nicht umgesetzt.


<jkey@netsys-it.de>

© 2004 NetSys.IT GbR




 Copyright © 2004 NetSys.IT