views:

294

answers:

3

Question: Where can I get a list of all UIDefaults properties that exist in Swing?

I know of the possibility to write a small snippet of code that just extracts and displays them but I would like to know whether the list I get that way is really complete. When I do so, I get 636 properties for the Metal L&F, 613 for Windows L&F and 550 for the Motif one. Another source on the net puts a list of 795 entries although it has some incorrect additional entries. But perhaps even the metal l&f does not set all it actually could.

I have difficulties to believe there really doesn't exist an official list of possible properties from sun.

+2  A: 

Not all properties come from Sun. For example, Mac OS lists 654 properties + 51 specific to apple.laf.AquaLookAndFeel. Here's some code if others want to submit results:

import javax.swing.UIDefaults;
import javax.swing.UIManager;

public class CountUIDefaults {

    public static void main(String[] args) throws Exception {
        System.out.println(System.getProperty("os.name")
            + " " + System.getProperty("os.version")
            + " " + System.getProperty("java.version"));
        UIManager.LookAndFeelInfo[] lfa =
            UIManager.getInstalledLookAndFeels();
        for (UIManager.LookAndFeelInfo lf : lfa) {
            UIManager.setLookAndFeel(lf.getClassName());
            UIDefaults uid = UIManager.getLookAndFeelDefaults();
            System.out.println("***"
                + " " + lf.getName()
                + " " + lf.getClassName()
                + " " + uid.size() + " entries");
        }
    }
}
Mac OS X 10.5.8 1.6.0_17
*** Metal javax.swing.plaf.metal.MetalLookAndFeel 636 entries
*** Nimbus com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel 1052 entries
*** CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel 550 entries
*** Mac OS X com.apple.laf.AquaLookAndFeel 705 entries
trashgod
+1  A: 

Ah, well, I should have thought about that one more intensively.

Of course the list of "valid" properties is directly dependent on the used l&f and what you want to do with it:

  1. Write an own l&f In this case, the "official list" is the list of properties you get from the l&f you inherit. In case of MetalLookAndFeel, it's the 636 entries you can retrieve, I haven't tried the numbers for the more common BasicLookAndFeel and SynthLookAndFeel - I guess they can be checked by putting a more or less empty Subclass of those and running the code presented above.

  2. Modify an existing l&f In this case running the code for the l&f used yields everything that can be modified.

So in the end, the solution is that there cannot be a thing like an "official overall list" as such a one can only be put based on some specific l&f, in which case the code above will yield what one wants to know.

Mathias Weyel
I haven't tried it, but you might like http://code.google.com/p/petersoft-java-style-2/
trashgod
A: 
Linux 2.6.31-19-generic 1.6.0_0
*** Metal javax.swing.plaf.metal.MetalLookAndFeel 642 entries
*** CDE/Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel 556 entries
*** GTK+ com.sun.java.swing.plaf.gtk.GTKLookAndFeel 566 entries
SailingBy