2009-04-22 10 views
0

Ich habe den folgenden Groovy + SwingBuilder-Code.Groovy: Wie Objekte mit ID-Tag zugreifen?

In einem Panel erzeugen I Kontrollkästchen und in einem anderen Panel mag ich die Werte des Kontrollkästchen zuzugreifen. Der Code sieht im Grunde gefällt das:

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 ist eine Karte mit (id, Text) Paare, die verlängert werden kann.

Wenn ich zeigen Werte drücken Ich erhalte eine Fehlermeldung:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Kann nicht Gussobjekt 'foo' mit Klasse ‚java.lang.String 'Klasse ‚java.lang.Class‘

Wie könnte ich die Kontrollkästchen für meine Aktion in der zweiten Platte zugreifen, indem Sie die Checkbox-IDs aus optionsmap verwenden?

+0

Was genau meinst du mit „funktioniert nicht“? Stürzt es ab? Gibt es vielleicht nur diejenigen aus, die überprüft werden? Sind sie alle nicht ausgewählt? Wie binden Sie die Daten im Formular des vorherigen Panels? Bitte seien Sie vollständiger. – billjamesdev

Antwort

0

Die Lösung für Variablen aus der Karte zuzugreifen, ist wie folgt:


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