2009-04-22 3 views
0

다음 Groovy + SwingBuilder 코드가 있습니다.Groovy : ID 태그가있는 객체에 액세스하는 방법?

하나의 패널에서 확인란을 생성하고 다른 패널에서 확인란의 값에 액세스하려고합니다. 코드는 기본적으로 보이는이를 추천했습니다 :

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, 텍스트) 쌍지도입니다.

org.codehaus.groovy.runtime.typehandling.GroovyCastException : 할 수 없습니다 클래스 캐스트 객체 'foo는'java.lang.String의 내가 쇼 값을 누르면

나는 오류 메시지가 '클래스 에'java.lang.Class의 '

가 어떻게 optionsmap에서 체크 박스 ID를 사용하여 두 번째 패널에서 내 행동의 확인란에 액세스 할 수 있습니다?

+0

무엇, 정확하게, 당신은 "작동하지 않습니다"에 의해 의미합니까? 그것은 추락합니까? 아마도 체크 된 것들만 출력 할 것인가? 그들은 모두 선택되지 않았습니까? 이전 패널의 양식에서 데이터를 어떻게 바인딩합니까? 좀 더 완성주세요. – billjamesdev

답변

0

지도에서 변수에 액세스 할 수있는 솔루션은 다음과 같이이다 :


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