1
有没有办法使用SwingBuilder将属性绑定到另一个对象的多个属性?例如,我想将一个按钮的启用属性绑定到两个文本字段 - 该按钮仅在两个文本字段均为非空时才启用。Groovy SwingBuilder绑定到多个属性
有没有办法使用SwingBuilder将属性绑定到另一个对象的多个属性?例如,我想将一个按钮的启用属性绑定到两个文本字段 - 该按钮仅在两个文本字段均为非空时才启用。Groovy SwingBuilder绑定到多个属性
你可以做这样的事情:
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 })
}
}
正如你所看到的,结合2个文本框在我们的模型中字段,然后结合enabled
的按钮是真实的,如果两个text1
和text2
是非 - 空
谢谢,这个例子真的很有帮助 – 2011-06-15 01:02:07
+1的答案!但是你在Groovy中发现了哪些类型的东西?任何博客? – 2011-06-15 03:05:38
@ant我在[Andres Almiray的博客](http://jroller.com/aalmiray/entry/swingbuilder_s_binding_revisited)(Griffon的创建者)发现了一些代码,它帮助我解决了如何做到这一点:-) – 2011-06-15 08:01:16