Groovy SwingBuilder привязать к нескольким свойствам
Есть ли способ привязать свойства к нескольким свойствам другого объекта с помощью SwingBuilder? Например, я хочу привязать свойство enabled кнопки к двум текстовым полям - кнопка активна только тогда, когда оба текстовых поля не пусты.
1 ответ
Решение
Вы можете сделать такую вещь:
import groovy.beans.Bindable
import groovy.swing.SwingBuilder
import javax.swing.WindowConstants as WC
class CombinedModel {
@Bindable String text1
@Bindable String text2
}
def model = new CombinedModel()
SwingBuilder.build() {
frame(title:'Multiple Bind Test', pack:true, visible: true, defaultCloseOperation:WC.EXIT_ON_CLOSE ) {
gridLayout(cols: 2, rows: 0)
label 'Input text 1: '
textField( columns:10, id:'fielda' )
label 'Input text 2: '
textField( columns:10, id:'fieldb' )
// Bind our two textFields to our model
bean( model, text1: bind{ fielda.text } )
bean( model, text2: bind{ fieldb.text } )
label 'Button: '
button( text:'Button', enabled: bind { model.text1 && model.text2 } )
}
}
Как видите, это связывает два текстовых поля с полями в нашей модели, а затем связывает enabled
для кнопки, чтобы быть правдой, если оба text1
а также text2
не пустые