Skip to: Site menu | Main content

Groovy 

      Download | Documentation | Developers | Community

An agile dynamic language for the Java Platform

Swing Builder Add comment to Wiki View in Wiki Edit Wiki page Printable Version

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())
}