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 开发者_C百科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.
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
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:
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.
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.
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
精彩评论