1

我有以下代码

在模型中

@Bindable boolean readOnly

在视图中

checkBox(text: 'Read Only', constraints:'wrap',selected:bind(target: model, targetProperty:'readOnly'))

在控制器中

new groovy.swing.SwingBuilder().frame(title:'File opened',pack:true,show:true){
  panel(layout: new MigLayout('fill'), border: titledBorder('Content')){
    separator(constraints:"cell 0 1")
    textArea(text: part1 , editable: false)
    separator(constraints:"cell 0 2")
    textArea(text: part2 , editable: false)
    separator(constraints:"cell 0 1")
    t1 = textArea(text: part3 , editable: "${model.readOnly}",columns:50)
    separator(constraints:"cell 0 2")
    t2 = textArea(text: part4 , editable: "${model.readOnly}")
    separator(constraints:"cell 0 3")
    button('Save!', actionPerformed: save, constraints: 'span 5, bottom, right')
  }
}

但它始终启用,是否选中复选框无关紧要。

system.out.println("${model.readOnly}")

显示truefalse正确,但由于某种原因在框架上它总是设置为true

注意:赋值也boolean a = "${model.readOnly}"将 a always 设置为 true ,或者if "${model.readOnly}" == trueorif ("${model.readOnly}")像往常一样工作true

哦,还可以在框架中设置大小,例如

new groovy.swing.SwingBuilder().frame(title:'File opened',pack:true,show:true, size : [640,480]){

也不起作用

4

1 回答 1

2

(a) 文本区域需要绑定,而不仅仅是设置。如所写,它只会读取一次该值。

t1 = textArea(text: part3 , editable: bind (source: model, sourceProperty:'readOnly') ,columns:50)

(b)另外一件事,结合包装辅助尺寸通常不起作用。pack:true每当您声明尺寸时,请从声明中删除。

于 2012-03-13T16:26:58.650 回答