我有以下代码
在模型中
@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}")
正确显示true
和false
但由于某种原因,它始终设置为true
注意:作业boolean a = "${model.readOnly}"
也始终为true,if "${model.readOnly}" == true
或if ("${model.readOnly}")
始终为true
哦,还可以在框架中设置尺寸,例如
new groovy.swing.SwingBuilder().frame(title:'File opened',pack:true,show:true, size : [640,480]){
不起作用
答案 0 :(得分:2)
(a)文本区域需要绑定,而不仅仅是设置。如上所述,它只会读取一次值。
t1 = textArea(text: part3 , editable: bind (source: model, sourceProperty:'readOnly') ,columns:50)
(b)还有一件事,结合包装辅助尺寸通常是行不通的。无论何时声明大小,都要从声明中删除pack:true
。