If i had to put a number on it, i would say that more than 90% of the feedback that i receive on my projects is on bad behavior (exceptions, visual artifacts, broken APIs etc). I don’t complain. Not only this person decided to download and evaluate one of my projects. He also decided to spend his time to report the problem he is seeing via the project forums, mailing lists or a private e-mail. I’ve said it before and i’ll say it again – a feature that has absolutely no feedback is a feature that nobody is using.
In fact, as a developer myself i don’t even expect the “thank you” e-mails (and this post is most certainly not a solicitation for one). However, i would like to use this space as a collective “thank you” to all the open-source libraries that i am using and the people behind them. Please know that when you don’t hear from me, it only means that your library is working as expected. Thanks for all your free time and countless hours spent working on your projects. Thanks for spending this time away from your other hobbies, and sometimes even away from your family. It is much appreciated by your users. It is much appreciated by the community in general, even when we decide to go with a competing solution. Having choice is good for us as users, but it is also good for you as developers.
I would also like to thank the developers of the core engine itself. The work that you do on the JDK is seen by millions of people and even when we complain, it is all in good spirit. Do not be discouraged when you make a great new feature and all people seem to focus on is one specific bug that is still unfixed in the core. It is in our nature to exaggerate and focus on the negative, but this does not mean that we do not appreciate the work that you are doing.
And finally, i would like to thank developers working on new projects and exploring new frontiers. Keep up the work and don’t get discouraged by the level of attention from the outside community. Good ideas take some time to settle in and win developers’ hearts.
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.
Here are some Swing links that you might have missed during this week:
- Roman Kennke kicks off the week with the announcement on Caciocavallo project. It will implement his proposal for OpenJDK challenge and concentrate on three areas:
- An implementation of the AWT Toolkit interface (java.awt.peer and a bunch of classes in java.awt), that doesn’t make use of Sun internal classes.
- An implementation of the AWT Toolkit interface that subclasses Sun internal classes and reuses most of the infrastructure. (This is named Caciocavallo-NG)
- Patches to OpenJDK to enable the above
- The trend of using Java UI toolkits as “virtual UI machine” continues with the proposal of Glimmer project in Eclipse community. Over the past few months we have seen a number of attempts to “wrap” Swing in a variety of languages that use JVM as the runtime. These include Groovy, JRuby and Scala. While up until now these attempts have chosen Swing as the underlying “platform”, Glimmer will use SWT to create a JRuby DSL for creating UIs. The project creation review is scheduled for April 16, and you can peruse the PDF slides of creation review.
- On a related note, Gregg Bollinger explores the Groovy SwingBuilder on a simple login panel using MigLayout. He then follows with an example of integrating Groovy with Java using the new Script API, and Danno Ferrin replies with a better way to achieve the same result.
- Nick from Palantir writes about a collection of time chooser components. These explore various text-based and rich ways to select time in Swing applications. WebStart application and full sources are provided.
- Christophe Le Besnerais continues exploring the JNA project to play with translucent windows. In the new entry he provides an implementation of Mac OS X transparent panel.
- Alexander Potochkin notes an unexpected and an unwelcome side effect of temporarily turning off the double buffering on the current repaint manager – the “gray-rect” fix is disabled :(
For those of you interested in more technical background on composite rendering in general (and how it subsequently applies to Java2D), the following links might be of interested. Found via a very informative blog of Russ Cox: