2011-06-14 60 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