问题描述
|
有没有一种方法可以使用SwingBuilder将一个属性绑定到另一个对象的多个属性?例如,我想将一个按钮的enabled属性绑定到两个文本字段-仅当两个文本字段都不为空时才启用该按钮。
解决方法
您可以执行以下操作:
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 } )
}
}
如您所见,它将两个文本字段绑定到我们模型中的字段,然后如果text1
和text2
均为非空,则将enabled
绑定为true