J'ai le code Groovy + SwingBuilder suivant.Groovy: Comment accéder aux objets avec le tag Id?
Dans un panneau, je génère des cases à cocher et dans un autre panneau je veux accéder aux valeurs des cases à cocher. Le code ressemble aime essentiellement ceci:
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
est une carte avec (id, texte) paires qui peuvent être étendues.
Lorsque je presse présentent des valeurs je reçois un message d'erreur:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Impossible cast objet 'foo' avec la classe « java.lang.String «à la classe « java.lang.Class »
Comment pourrais-je accéder aux cases à cocher pour mon action dans le second panneau en utilisant la case à cocher ids de optionsmap
?
Qu'est-ce, exactement, voulez-vous dire par « ne fonctionne pas »? Est-ce que ça plante? Est-ce que cela ne produit peut-être que ceux qui sont vérifiés? Sont-ils tous non sélectionnés? Comment liez-vous les données dans le formulaire du panel précédent? S'il vous plaît soyez plus complet. – billjamesdev