XML-Bindung in der Swing-Benutzerschnittstelle
Alle Formulare in der Swing-Benutzerschnittstelle folgen dem Model View Controller-(MVC-)Paradigma. Das Formular selbst fungiert als Ansicht (View) und enthält daher lediglich die Darstellungslogik. Die gesamte Geschäftslogik befindet sich in einer separaten Controllerklasse.
Das Modell für jedes Formular ist ein XML-DOM-Element.
Zur weiteren Vereinfachung der Darstellungslogik unterstützen die Kernklassen in < yfs> eine Form von XMLBinding von verschiedenen Steuerelementtypen an das DOM-Modell. Der Formularersteller hat dadurch die Möglichkeit, die verschiedenen Steuerelemente in einem Formular an verschiedene Teile des DOM zu binden. Dabei gewährleistet die Infrastruktur, dass DOM und Steuerelemente zur Laufzeit synchronisiert werden. DOM-Änderungen werden im Steuerelement nachvollzogen und umgekehrt.
- Javax.swing.JTextComponent (und Unterklassen)
- Javax.swing.JTable
Die Steuerung der Bindungssemantik wird unten ausführlich beschrieben.
Allgemeine Bindung für alle Steuerelemente
Teile einer Eingabe-XML können auf der Basis eines XMLBindingString an Steuerelemente gebunden werden. Jede Zeichenfolge wird in XSL-Syntax ausgewertet und die erste Übereinstimmung als Wert der Bindung verwendet.
Die gebundene XML kann beispielsweise wie folgt aussehen:
<Order OrderNo='23' OrderDate='20010101' >
<ShipToAddress City='Nashua' />
</Order>Die folgende Tabelle illustriert XMLBinding.
| XML-Bindungszeichenfolge | Beispielwert |
|---|---|
| Xml:/Order/@OrderNo | 23 |
| Xml:/Order/@OrderDate | 20010101 |
| Xml:/Order/ShipToAddress/@City | Nashua |
| Xml:/Order/ShipToAddress | Wird zum ShipToAddress-Knoten ausgewertet |
Namenseigenschaft
Jedes Swing-Steuerelement hat einen Bean-Eigenschaftsnamen, der mit der Funktion
setName(String) eingestellt werden kann. Der Wert dieser Eigenschaft muss ein XMLBindingString sein, der XMLData für die Bindung an dieses Steuerelement angibt.
Bindung für JText-Feld
Neben der Namenseigenschaft können Sie für jedes Textfeld die folgenden JTextField-Eigenschaften festlegen:
| Eigenschaft | "Syntax" |
|---|---|
Datentyp Es werden nur die Werte Integer, Date und String unterstützt. |
|
associatedLabel Dies ist das JLabel, das dem Textfeld zugeordnet ist. |
|
Obligatorisch Wenn die Eigenschaft Mandatory auf "true" festgelegt ist und das Feld leer gelassen wird, ändert die zugehörige Beschriftung des Textfelds ihre Farbe. Dieses Verhalten wird vom lostfocus-Ereignis des Textfelds gesteuert. |
|