Here's a simple example of using SwingBuilder:
import groovy.swing.SwingBuilder import java.awt.BorderLayout def swing = new SwingBuilder() count = 0 def textlabel def frame = swing.frame(title:'Frame', size:[300,300]) { borderLayout() textlabel = label(text:"Clicked ${count} time(s).", constraints: BorderLayout.NORTH) button(text:'Click Me', actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BorderLayout.SOUTH) } frame.pack() frame.show()
Here is what it will look like:
|
|
|
Here is a slightly more involved example, with an example of swing builder code re-use via a closure.
import groovy.swing.SwingBuilder import javax.swing.* import java.awt.* def swing = new SwingBuilder() def sharedPanel = { swing.panel() { label("Shared Panel") } } count = 0 def textlabel def frame = swing.frame(title:'Frame', size:[300,300], defaultCloseOperation:JFrame.EXIT_ON_CLOSE, pack:true, show:true) { boxLayout(axis:BoxLayout.Y_AXIS) textlabel = label(text:"Clicked ${count} time(s).", constraints: BorderLayout.NORTH) button(text:'Click Me', actionPerformed: {count++; textlabel.text = "Clicked ${count} time(s)."; println "clicked"}, constraints:BorderLayout.SOUTH) widget(sharedPanel()) widget(sharedPanel()) }
Labels
(None)
