1

SwingBuilder を使用してプロパティを別のオブジェクトの複数のプロパティにバインドする方法はありますか? たとえば、ボタンの有効なプロパティを 2 つのテキスト フィールドにバインドしたいとします。ボタンは、両方のテキスト フィールドが空でない場合にのみ有効になります。

4

1 に答える 1

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場合にボタンが true になるようにバインドします。text1text2

于 2011-06-14T20:54:16.363 に答える