我有以下Groovy + SwingBuilder代码。
在一个面板中,我生成复选框,在另一个面板中,我想访问复选框的值。代码看起来基本上喜欢这个:
def optionsmap = [ foo : "value_foo", bar : "value_bar"]
SwingBuilder.build()
{
frame(title:'demo1', size:[400,700], visible:true, defaultCloseOperation:WC.EXIT_ON_CLOSE) {
gridLayout(rows: 1, cols: 2)
panel(id:'optionPanel', constraints:java.awt.BorderLayout.CENTER) {
gridLayout(rows: 5, cols: 1)
myGroup = buttonGroup();
for (entry in optionsmap)
{
checkBox(id: entry.key, text: entry.value )
}
}
panel(constraints:java.awt.BorderLayout.WEST) {
button ('Show values', actionPerformed: {
for (entry in optionsmap)
{
println (entry.key as Class).text
}
})
}
}
}
optionsmap
是一个可以扩展的(id,text)对的地图。
当我按显示值时,我收到一条错误消息:
org.codehaus.groovy.runtime.typehandling.GroovyCastException:不能 使用类'java.lang.String'将对象'foo'强制转换为类 '的java.lang.Class'
如何使用optionsmap
中的复选框ID访问第二个面板中的操作复选框?
答案 0 :(得分:0)
从地图访问变量的解决方案如下:
for (entry in optionsmap)
{
if (variables[entry.key].selected)
println variables[entry.key].text
}