Nimbus Look and Feel for Swing

Nimbus is still the default cross platform look and feel for Java Swing applications. You still see new applications coming to market using this theme. I recently saw a new Kickstarter CNC with the control software using this theme.

The Nimbus theme was originally designed for Solaris. In 2007 I worked on creating a version for Java Swing as a new cross-platform theme. Although the design was completed by one of the Sun design team who had since left, there were many parts still needed to cover all use cases needed to provide a complete look and feel for all Swing components.

Swing look and feels up to this point had been built in one of two ways, hand coded draw calls or using the native platform engine to render graphics. For Nimbus we decided to build on the concept Scott Violet had started with the Synth LaF which was to create a basis for new themes to be easily be created. 

We innovated here in setting out to build a complete theme from metadata with photoshop fidelity completely rendered in vector graphics. To do that we designed a high-performance engine to cache and draw the theme at run-time and a design tool to create the theme visually. Unfortunately, the design tool was never released but you can see screenshots below.

Nimbus Designer

All the skins for the controls were drawn in here. It had Adobe Illustrator style drawing tools and a pixel preview so you could see the exact pixels you would get when those vectors were rendered. This allowed designing to sub-pixel detail and playing tricks with the antialiasing to create small blurs cheaply.


For testing Nimbus based look and feels we needed a tool that let us visualize every control in every possible state. We built an internal tool called Laffy and decided to, later on release it as one of the Java JDK samples.