Here are some Swing links that you might have missed during this week:
- Richard Kennard has announced release 0.43 of his Metawidget project. Geertjan Wielenga picks this up on the DZone, and Dieter Krachtus has engaged in an architectural discussion on the project. Richard also shows how Metawidget can emit JIDE components.
- Jan Erik Paulsen vents his frustration with some of the Swing pain points, including layout managers, audio / video support and JavaFX design tools vision. Over the past year Jan Erik had a number of very interesting projects, including Capture, Photoshop Express and Amanda, and it looks like the topics above have hindered the progress of these projects to some degree.
- Eugene Toporov announces release 1.0 of commercial JxBrowser library for embedding Mozilla Firefox browser into AWT / Swing applications.
- Ingo Maier announces release 0.1 of scala.swing, an event based library for building Swing applications in Scala.
- Jacek Furmankiewicz continues his explorations of Java builders for Swing layouts, and it looks like this approach strikes a chord with his readers (see followup by Andres Almiray).
- Continuing the trend of Swing as a “UI virtual machine” for JVM-based dynamic languages, Greg Trasuk experiments with project JyMatisse that allows using Jython as the backend for Matisse-generated forms.
- And finally, Christophe Le Besnerais has published a Swing component for cropping images. The ability to install a custom filter (illustrated by grayscaling and blurring the outside of the cropped area) is especially impressive, and my only concern is using JLayeredPane as a base class. Perhaps using JPanel with OverlayLayout can be a simpler solution?
The first volume of Substance sightings was published last August and featured four Swing media-oriented applications. The purpose of this series is to highlight the capabilities that Substance look-and-feel brings to Swing applications, and the second volume showcases three open-source audio players with Substance-powered UI.
The first audio player is aTunes (hosted on Sourceforge as well), and it takes advantage of a few Substance APIs. Here is a sample screenshot of aTunes under the dark Raven skin (click to see full-screen image):

And here is another aTunes screenshot under the Business Black Steel skin. Note that both screens use vertically rotated tabs (in the top left corner) and the status bar component from SwingX component suite rendered by the Substance SwingX plugin:

The final aTunes screenshot shows the UI under Arabic locale. Note how Substance handles the right-to-left orientation of title pane buttons, menus, sliders, table headers and tabs:

The second player is Jajuk (which is also hosted on Sourceforge). Here is a screenshot of Jajuk in action – note how it uses an image-based watermark:

Unlike aTunes, Jajuk uses a few custom components that are not painted by Substance (the title bars of inner docked views and some of the buttons).
The last one is Xtreme Media Player (also hosted on Sourceforge). Unlike aTunes and Jajuk, Xtreme MP uses a custom Substance skin to create a unique look for the application. Here is a screenshot of XtremeMP in action:

This application uses SwingX and the matching Substance SwingX plugin as well (for the status bar). In addition to a custom Substance skin, it also takes advantage of the Substance button shaper functionality, setting custom button shapers on the control panel buttons:

Once the application defines the contour of each button, Substance takes care of the rest, including mouse hit detection and proper animation sequences.
If you haven’t tried Substance in your application, you’re more than welcome to do so. The current stable release is 4.3, and the next 5.0 version is available in early development drops.
Here are some Swing links that you might have missed during this week:
- Sandip Chitale has two tips on using JOptionPane component. The first tip show how to use multiline text and images, and the second tip is on making the component dialog resizable.
- David Qiao has announced the official release 2.0 of JIDE Desktop Application Framework.
- Maxim Zakharenkov has announced release 1.0 of the Swing Explorer project. The getting started guide shows the potential of this project for visual debugging of Swing application. The player feature looks particularly impressive.
- Nazmul Idris sums up the limitations of the current native font rasterizer in 6u10 latest builds.
- Geertjan Wielenga writes an overview article on FEST-Swing project by Alex Ruiz and Yvonne Price.
- Roman Kennke posts updates on the Caciocavallo project. The first is on build errors, and the second is on font rasterization.
- Fabien sums up a few libraries and tools that help building Swing applications.
- And finally, the Glimmer project proposal has been accepted by Eclipse. The goal of this project is to wrap SWT with a JRuby DSL for easier authoring of cross-platform user interfaces. While interesting on itself, this might also prove a good catalyst and inject some life into the Swing-based efforts in Groovy, JRuby and Scala.
It gives me great pleasure to announce the official release for version 4.3 of Substance look-and-feel (code-named Nairobi). The list of new features includes:
It was on this day in 2005 that Substance project has been created. It is now three years old and to celebrate this occasion i have redesigned the main project page to be less cluttered and a little better organized. Hope that you like it, and if you have any comments, i will be more than interested to hear your opinion.
A few screenshots of the new functionality in Substance 4.3:
New decoration painters applied to the Flamingo ribbon component:

Highlight painters on table (note a single-line border separators):

Colorized visuals of disabled selected buttons:

A button with 72 pixel font:

Click on the button below to launch a signed WebStart application that shows the available Substance features.

The sources and binaries are available on
the project site and the CVS repository.