2009-04-22 38 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を用いて、第2のパネルで自分の行動のためのチェックボックスにアクセスすることができましたか?

+0

何を、正確に、あなたは「動作しない」で意味ですか?それはクラッシュしますか?それは、おそらく、出力されたものだけを出力しますか?それらはすべて非選択ですか?以前のパネルのフォームでデータをどのようにバインドしていますか?より完全にしてください。 – billjamesdev

答えて

0

マップから変数にアクセスするためのソリューションは、このようなものです:


       for (entry in optionsmap) 
       { 
         if (variables[entry.key].selected) 
          println variables[entry.key].text 
     } 
関連する問題