Java Swing:所有UIDefaults属性的列表

问题:我在哪里可以获得Swing中存在的所有UIDefaults属性的列表?

我知道有可能编写一小段代码,只提取并显示它们,但我想知道我得到的列表是否真的完整。 当我这样做时,我获得了金属L&F的636个属性,Windows L&F的613个属性和Motif的550个属性。 网上的另一个来源列出了795个条目,尽管它有一些不正确的附加条目。 但也许甚至金属l&f也没有完全设定它。

我很难相信真的不存在太阳可能属性的官方列表。

并非所有房产都来自Sun. 例如,Mac OS列出了654个属性+ 51个特定于apple.laf.AquaLookAndFeel的属性。 如果其他人想提交结果,这里有一些代码:

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
 ***金属javax.swing.plaf.metal.MetalLookAndFeel 636条目
 *** Nimbus com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel 1052条目
 *** CDE / Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel 550个条目
 *** Mac OS X com.apple.laf.AquaLookAndFeel 705条目

啊,好吧,我应该更加深思熟虑。

当然,“有效”属性列表直接取决于使用的l&f以及您要对其执行的操作:

  1. 写一个自己的l&f在这种情况下,“正式列表”是你从你inheritance的l&f获得的属性列表。 对于MetalLookAndFeel,它是你可以检索的636个条目,我没有尝试过更常见的BasicLookAndFeel和SynthLookAndFeel的数字 – 我想它们可以通过放置一个或多或少的空子类并运行上面的代码来检查。

  2. 修改现有的l&f在这种情况下,运行l&f的代码会产生可以修改的所有内容。

所以最后,解决方案是不能有像“官方整体列表”这样的东西,因为这样的东西只能基于某些特定的l&f来放置,在这种情况下,上面的代码将产生想要知道的东西。

 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