2011-06-14 65 views
1

有没有办法使用SwingBuilder将属性绑定到另一个对象的多个属性?例如,我想将一个按钮的启用属性绑定到两个文本字段 - 该按钮仅在两个文本字段均为非空时才启用。Groovy SwingBuilder绑定到多个属性

回答

2

你可以做这样的事情:

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的按钮是真实的,如果两个text1text2是非 - 空

+0

谢谢,这个例子真的很有帮助 – 2011-06-15 01:02:07

+0

+1的答案!但是你在Groovy中发现了哪些类型的东西?任何博客? – 2011-06-15 03:05:38

+0

@ant我在[Andres Almiray的博客](http://jroller.com/aalmiray/entry/swingbuilder_s_binding_revisited)(Griffon的创建者)发现了一些代码,它帮助我解决了如何做到这一点:-) – 2011-06-15 08:01:16