Hey,
I have googled for this a little and found results here and there, but nothing, that truely satisfies me.
I am looking for a GUI library for Java, that offers two main requirements.
- It should have a nice and modern API design
- It should not be implemented in software all along, but make use of platform specific native GUI calls as much as possible.
Theming is one thing, but in 99% of all cases you will want to make your application look like any other app on your platform. So a button should look like a button on KDE or Win 7 or what ever you’re running the application on. So by default the GUI should look and behave like any other app on your platform and optionally and less importantly there COULD be the ability to theme it.
Controls like JTable or JTree are very powerful, but simply suck. I love the model approach and you can easily implement a default table with default renderers/editors and event handling. But when you want something more complex, it starts to stress you with unexplainable malfunction, which costs a lot of time to fix or to workaround.
A modern API should make use of enums instead of static int constants. This is much easier and intuitive to use.
Of course the API must be platform independent. So there have to be native libraries for all supported platforms, so that as much of the drawing as possible can be done by the windowing system natively. When a button is created, this shouldn’t mean to let Java paint a button, that looks like a platform specific one, but this should ask the platform to create a native button. This applies to all controls, that are supported by the platform. The unsupport ones would have to be rendered in software mode. This makes sure, that the GUI is as responsive as any other app on your platform, but doesn’t suffer from slower software mode.
Of course a library like this would have to replace AWT/Swing as a default in the JRE/JDK, so that all the needed natives can be shipped with it and it would be usable in an applet or Java web start.
What do you say? Is there something like this out there?
Marvin
