Extreme GUI Makeover 2007
This is one of the most enjoyable session in all of JavaOne. Last years Extreme GUI Makeover, the gang made over a typical looking mail client. This year Christopher Campbell, Shannon Hickey, Hans Muller, and Romain Guy presented transformed a pizza box-like business User Interface (UI) into a visually stunning UI with Swing and Java 2D. The first type presented by the extreme makeover folks is to use a modern Look and Feel like Nimbus.
According to Romain, it makes a good idea to add a splash screen, and in Java 6 this is easier than ever with the new -splash JVM option. You should also make good use of non-rectangular UI splash screen with a drop shadow, and a progress indicator. The demo here faded the splash screen image from sepia to a full color image to indicate the loading progress.
They demoed JGoodies form validation which paints a little warning icon on the text field. Another demonstration showed a modal dialog with rounded corners ala Web 2.0 which blurred the main application window below. They rounded the border by overriding the paintBorder method on the Swing component. They use of gradients everywhere. They demonstrated a set of thumbnails with reflection using ReflectionRender which you can find in SwingX project from the SwingLabs. The demo also demonstrated custom table cell rendering. The speakers said that the default cell renderer is a JLabel but that you can use any JCoponent with any layout.
The demo had some animated effects for sorting and filtering table rows by extending a TableRowSorter available in Java 6. The demo used the Timing Framework to drive the animation and used the Glass Pane to paint the animation.
One of the best moments of the demo was when Romain Guy joked, “One thing I don’t like about UI is that it is constrained inside the frame of the window.” Why stick square components inside to the bounds of a window? Romain demoed a translucent non-rectangular dialog window that floated outside the main application window. To get this effect he said he used the JNA API, which I understood him to be described as JNI for Swing.
In speaking about boring business application UIs Romain joked, “You want to call the police to arrest the guy that wrote that UI.”
In summary, if you want to makeover your Swing UI, use Java 2D, Timing Framework, SwingX, and the Nimbus L&F.