Is there a java look and feel based on the flat design concept?

Cláudio picture Cláudio · Sep 15, 2014 · Viewed 12.8k times · Source

I have 5 java systems for engineering whose UI were developed using Swing.

We started the development of these systems about 10 years ago and they have about 300K lines of code each. All these systems are in production environment.

One question that bother us about the UI of these systems is that they look old when compared with large available UIs of cell phones, tablets and web sites.

What do cell phones, tablets and web sites UI have in common ? Their look is based on the flat design concept.

So, we´re starting a research to find low cost alternatives to give to our systems a modern look oriented to flat design.

The first option we thought was to search a java L&F that is implemented based in the flat design concept. But We did not find one.

Does anyone knows if there is a java look and feel based, specifically, on the flat design concept ?

Best regards, Cláudio.

Answer

jefflunt picture jefflunt · Sep 15, 2014

There isn't a pre-built one, and UIs in Swing are...well...one of the most painful experiences in development I've ever had. UI is so inherently platform-specific that cross-platform UIs are a pipe dream for any semi-complex UI. The only place it works is if your UI is basically a menu bar and a surface onto which you draw your own UI.

That said, I think long-term you're probably looking into custom UI and widget work on some level, and though that would be a lot of custom UI tool work, the tradeoff is that at least you would control the UI from that point forward, could keep it up-to-date as you go along, and you wouldn't have to worry as much about what Java decides is good UI design.

Some possible options, none of which are going to be without major pain:

  1. Choose one of the two built-in L&F options, or set it to be the platform default (your app looks like the native platform), though you will have to debug the app on every platform separately to make sure the UI works consistently. At least with this option, if you set it to use the platform default, the app will look approximately like a native app on whatever OS it's on.
  2. Look into SWT - probably not worth it in the long run - you're just trading one set of less-than-idea situations for another, I think, but good to at least be educated about your options.
  3. Style the L&F with CSS - never tried this myself - but maybe worth a look. But personally, I would avoid investing any more time binding your application to Swing if you can avoid it. It's just one of those atrocious desktop experiences, as you've seen.
  4. Deliver your app as a web application, which I'm sure is a major re-architecting, and just have users access it through a browser. I realize that this is probably the "nuclear option", and totally unrealistic, but just throwing it out there.
  5. Suck it up and let your app continue to look like crap. There are worse fates in the world.