Missing panel.revalidate()
? This guy shows a radio button group with some songs based on which band you choose. The songs are rendered as radio buttons:
import groovy.swing.*
import javax.swing.*
import java.awt.*
import java.awt.BorderLayout as BL
def drawSongsPanel(songs) {
def p
new SwingBuilder().edt {
p = panel(visible: true) {
vbox(constraints: BL.CENTER) {
buttonGroup().with { btn ->
songs.each {
radioButton text:it, buttonGroup: btn
}
}
}
}
}
p
}
def getSongs(band) {
switch ( band ) {
case "stones": return ['start me up', 'jumpin jack flash', 'satisfaction']
case "beatles": return ['hey jude', 'yellow submarine', 'yesterday']
}
}
def chooseBand(event, panelBands) {
panelBands.add drawSongsPanel(getSongs(event.actionCommand))
panelBands.revalidate()
}
new SwingBuilder().edt {
frame(defaultCloseOperation: JFrame.EXIT_ON_CLOSE, visible: true, size: [600,500]) {
panel( visible: true, layout: new BL() ) {
vbox(constraints: BL.CENTER){
def panelBands
panelBands = panel(id:'classGroupPanel', layout: new GridLayout(1,9)) {
buttonGroup(id: 'classGroup').with {
radioButton text:"beatles", buttonGroup: it, actionPerformed:{e->chooseBand(e, panelBands)}
radioButton text:"stones", buttonGroup: it, actionPerformed:{e->chooseBand(e, panelBands)}
}
}
}
}
}
}