Folgendes Skript erzeugt eine kleine Oberfläche mittels Groovy. Zum Einsatz kommen unter anderem verschiedene SwingBuilder-Komponenten und das GridBagLayout.
[code lang=“groovy“]package bob.pokolm.usage
import groovy.swing.SwingBuilder
import javax.swing.WindowConstants as WC
import java.awt.BorderLayout as BL
import java.awt.GridBagConstraints
import java.awt.FlowLayout
import javax.swing.filechooser.FileFilter
import javax.swing.JFileChooser
import javax.swing.UIManager
def swing = new groovy.swing.SwingBuilder()
createFileChooserButton = { t, c ->
int h = t.preferredSize.height
b = swing.button(
borderPainted: false, contentAreaFilled: false, constraints: c,
preferredSize: [h,h], minimumSize: [h,h],
icon: UIManager.getIcon(„FileChooser.newFolderIcon“),
actionPerformed:{
fc = swing.fileChooser(
dialogTitle:“Verzeichnis wählen“,
fileSelectionMode : JFileChooser.DIRECTORIES_ONLY
)
if (fc.showOpenDialog() == JFileChooser.APPROVE_OPTION) {
t.text = fc.selectedFile;
}
})
return b
}
def frame = swing.frame(title:’SwingDemo‘,
defaultCloseOperation: WC.EXIT_ON_CLOSE) {
gridBagLayout()
label(text:“Pfad 1:“, constraints:gbc(gridx:0, gridy:0, insets:[5,5,0,0]))
t1 = textField(text:““, columns: 30, enabled:false,
constraints:gbc(gridx:1, gridy:0, weightx:1.0,
fill:GridBagConstraints.HORIZONTAL, insets:[5,5,0,0]))
createFileChooserButton(t1, gbc(gridx:2, gridy:0, insets:[5,2,0,2]));
label(text:“Pfad 2:“, constraints:gbc(gridx:0, gridy:1, insets:[5,5,0,0]))
t2 = textField(text:““, columns: 30, enabled:false,
constraints:gbc(gridx:1, gridy:1, weightx:1.0,
fill:GridBagConstraints.HORIZONTAL, insets:[5,5,0,0]))
createFileChooserButton(t2, gbc(gridx:2, gridy:1, insets:[5,2,0,2]));
panel (constraints:gbc(gridx:0, gridy:2, weightx:1.0, weighty:1.0,
gridwidth:GridBagConstraints.REMAINDER,
anchor:GridBagConstraints.LAST_LINE_END, insets:[15,0,0,0])) {
borderLayout(hgap: 5)
emptyBorder([5,5,5,5], parent:true)
cb = comboBox(items:[‚Aktion 1‘, ‚Aktion 2′], constraints: BL.CENTER)
button(text:’Ausführen‘, actionPerformed: {
println „Aktion: ${cb.selectedItem}“
}, constraints: BL.EAST)
}
}
frame.pack()
frame.show()[/code]