srecord noeq ScreenSelectorRadioButtons(SimpleLiveValue lvScreenNr) is Swingable { transient ButtonGroup radioButtons; bool compactLayout; visualize { radioButtons = jRadioButtons( countIteratorAsList(screenCount(), i -> (compactLayout ? "": "Screen ") + (i+1))); selectRadioButton(radioButtons, lvScreenNr!); onRadioButtonChange(radioButtons, i -> lvScreenNr.set(i)); ret jline(compactLayout ? jlabel("Screen") : null, buttonsInGroup(radioButtons)); } }