Groovy:如何使用Id标签访问对象?

时间:2009-04-22 15:02:47

标签: model-view-controller groovy

我有以下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访问第二个面板中的操作复选框?

1 个答案:

答案 0 :(得分:0)

从地图访问变量的解决方案如下:


                 for (entry in optionsmap)
                 {
                      if (variables[entry.key].selected)
                          println variables[entry.key].text
         }