Groovy: Modell und GUI mit @Bindable verbinden ab Groovy 1.6
Ab Version 1.6 unterstützt die Programmiersprache Groovy (Java) die @Bindable
-Annotation mit deren Hilfe sich leicht das Datenmodell an GUI-Elemente binden lässt.
import groovy.swing.SwingBuilder import groovy.beans.Bindable class PersonModel { @Bindable String name } def personModel = new PersonModel() SwingBuilder.build { frame(title: '@Bindable PersonModel', show : true, size : [400, 60], locationRelativeTo : null, defaultCloseOperation: javax.swing.WindowConstants.EXIT_ON_CLOSE) { gridLayout(cols: 1, rows: 2) textField(id: 'inputName') bind(source: inputName, sourceProperty: 'text', target: personModel, targetProperty: 'name') label(text: bind{personModel.name}) } // Frame } // SwingBuilder
Das ganze basiert intern auf den PropertyChangeListener
von Java. Eine Beschreibung der Funktionsweise gibt es von Danno Ferrin in "@Bindable - Observable Properties for Groovy". Eine Beschreibung der verschiedenen Binding-Modelle von Andres Almiray in "SwingBuilder's binding revisited" und "Taking SwingBuilder's binding for a spin".