Groovy SwingBuilder привязать к нескольким свойствам - PullRequest
1 голос
/ 14 июня 2011

Есть ли способ привязать свойства к нескольким свойствам другого объекта, используя SwingBuilder?Например, я хочу привязать свойство enabled кнопки к двум текстовым полям - кнопка активна только тогда, когда оба текстовых поля не пусты.

1 Ответ

2 голосов
/ 15 июня 2011

Вы можете делать такие вещи:

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 не пустые

...