Groovy: Как получить доступ к объектам с тегом Id? - PullRequest
0 голосов
/ 22 апреля 2009

У меня есть следующий код 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: невозможно приведение объекта 'foo' с классом 'java.lang.String' к классу 'Java.lang.Class'

Как я могу получить доступ к флажкам для своих действий на второй панели, используя идентификаторы флажков optionsmap?

1 Ответ

0 голосов
/ 24 апреля 2009

Решение для доступа к переменным с карты выглядит следующим образом:


                 for (entry in optionsmap)
                 {
                      if (variables[entry.key].selected)
                          println variables[entry.key].text
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...