How can I create a "modern looking" Java desktop application?

sanity picture sanity · Apr 13, 2012 · Viewed 62.6k times · Source

Similar questions to this are asked periodically, but many of these answers are outdated.

I need to build a cross-platform desktop application in Java with a GUI of comparable quality to contemporary desktop apps.

Swing is the default choice, but I have yet to encounter a Swing application that didn't look, at the very least, quite dated and clunky (subjective, I know, but with GUIs it's hard to avoid aesthetic judgements).

I notice that the new Bitcoin client now uses QT with Java bindings, and does have an attractive user interface, but this has the disadvantage that it is no-longer pure Java.

So much of what I find when I search for Swing-related libraries is 5 years old or older, even though the aesthetics of desktop applications have evolved significantly since then.

If you needed to build a Java desktop application from scratch, what would you use for its GUI?

Answer

Mikle Garin picture Mikle Garin · Apr 13, 2012

I can also offer you a new LaF to look into - WebLaF. I'am currently working on it to bring a lot of UI features and make work with Swing much easier for anyone by just using WebLaF library basic features.

A few examples showing how some of WebLaF components look like: Some of WebLaF components

Some of main goals i am targeting:

  1. Great and modern-looking L&F with support for all Swing components
  2. An extensive set of additional components which you won't find in standard Swing
  3. A big set of Utility classes to assist you with writing the code

WebLaF library also suggests a few other advantages and unique features:

  1. It is an open-source project (GPLv3 licensed)
  2. Easy components styling using painters system (specifically with 9-patch files)
  3. Quick and easy customization of the default "Web" style
  4. Lots of features to accelerate and simplify Swing application interface creation

You can try the demo-app to see if it is modern and simple enough :)