Java has a very flexible UI called Swing for making nice user interfaces. It has come on a long way in the last couple of years,
especially since Java 6 was released.
Swing has a very good system for plugging in custom Look and Feels (LAFs). You
can download some excellent third-party LAFs for Swing (Substance is a good example), or you
can make minor tweaks to the LAF that you are using, e.g. "make all button foreground text red".
The way you achieve the example above is something along the lines of:
.. all fine so far. But how do you know what keys (e.g. the JButton.foreground bit) are available for a given LAF?
Sun's position on this appears to be that the keys are intentionally not exposed as they may (and do) change between LAFs and from Java
version to Java version. That's perfectly valid if you're writing cross-platform, portable code, but sometimes you know that you're
using a particular LAF on a given platform.
I've put together a simple Java program (UIDefaults) which, when run, creates a HTML page for each LAF available on your machine, listing
all the UIManager keys available and their values. There are many combinations of LAFs, platforms and Java versions - this is where
I need your help. Take a look at the Library (further down). If you have a platform or version of Java that isn't on this
list, please run UIDefaults on your system and email me the results so that I can add them to the library.
Extract the ZIP to a directory of your choosing, and either double-click UIDefaults.jar, or use the command-line, change into the UIDefaults directory and
java -jar UIDefaults.jar
You should see some text output and a few windows may flash up for a second or so, then disappear. This is normal. A directory should be
created 'output/pages' which will contain HTML files that you can peruse in a web browser (and hopefully email to me so I can expand the library).
This is a list of all the UIManager default keys and values that I've found / been sent so far, for different versions of Java, Operating Systems and LAFs: