JFace Databinding Radiobuttons

In diesem Beitrag geht es um die Verwendung der JFace Datenbindung mit zwei Radiobuttons.

Radiobuttons Databinding

Wie in der obigen Abbildung zu sehen werden zwei Button als Radiobuttons eingefügt (m_yesButton, m_noButton), ein Label welches den Wert des Members rbstate und ein Button zum direkten Setzen des Modellwertes rbstate.

Das Snippet wurde unter Eclipse (Oxygen Release (4.7.0)) erstellt und kann dort als Java Anwendung gestartet werden. Klickt man einen Radiobutton an, wird das Modell auf diesen Wert gesetzt. Steht rbstate auf YES, kann man mit dem Button „Auf No“ rbstate auf „NO“ setzen. Dann wird über die Datenbindung die Auswahl der Radiobuttons automatisch aktualisiert.

In der Methode iniDataBinding wird die Datenbindung vorgenommen. Dabei werden zunächst Observablen für die Selektion der Radiobuttons erstellt (Z130, Z132). Dazu wird eine SelectObservableValue  Observable erstellt, die mit addOption die Observablen für die Radiobuttons erhält (Z 135-Z 138). Dann wird die Observable für die Variable rbstate erzeugt (Z 140) und schliesslich selbige mit der SelectObservableValue gebunden(Z 143).

Die Observable für rbstate wird dann noch mit der Widget Observablen für den Label gebunden(Z 147).

Im Modell liegt die Modellklasse als Bean vor! D.h. es liegen zu den Variablen Getter und Setter vor.

 

Beim Versuch die Datenbindung in meinem gerade aktuell bearbeiteten Programm zu integrieren hatte ich zunächst kein Glück. Das Problem bestand in der nicht Bean – Konformen Form meiner Daten. In der Modellklasse hatte ich eine Variable vColor. Die Setter und Getter habe ich selbst manuell zugefügt: getVColor und setVColor. Damit konnte in der Datenbindung die Variable vColor nicht gefunden werden. Richtig wäre gewesen: getvColor und setvColor, also mit einem kleinen v, welches nicht in einen Großbuchstaben gewandelt wird, da der folgende Buchstabe bereits ein Großbuchstabe ist. Gefunden unter

Java Bean Getters/Setters

Dieser Fehler hat mich Stunden der Suche gekostet.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.