2008-10-14 62 views
2

好吧,现在有了一个使用“系统”外观和感觉的摇摆应用程序。现在,我想要将主面板的背景颜色更改为黑色。太简单了吧?Java-更改摆动背景颜色?

UIManager.put("Panel.background", Color.BLACK); 

好耶,除了现在在应用程序中的控件看起来愚蠢的,因为他们的“影子”,对于一个更好的词想,都毕业朝老系统默认的颜色(毛窗户灰色)褪色。所以所有的控件都有浅灰色的“角落”,特别是JTabbedPane上的标签。 我知道它可以被修复,因为如果您将windowsXP主题更改为具有不同默认应用程序颜色的主题,则控件将采用此已更改的颜色,并且其阴影会“淡入”它。

但是我不知道UIManager键是什么,或者你可以用UIManger做。

我真的不想改变L & F引擎,因为除此之外它看起来不错。

回答

1

您可以使用UIManager.getDefaults()查看默认设置(及其键)是什么。 然后,您可以迭代生成的keySet(它是Map的一个实例)。

因此,像这样将显示所有默认键:

for (Object key: UIManager.getDefaults().keySet()) 
{ 
    System.out.println(key); 
} 
2

一般来说,这是一个有点棘手。这取决于您使用的确切LaF。

例如。 JGoodies使用自己的颜色方案重新定义这些东西。

一般属性名称是由像

COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

不幸的是,属性名只能从拉芳实现类得到。这些不是共享的东西。每个组件都有自己的。或者更好的是,这取决于他使用的作者的懒惰。一般来说。

很多帮助使重新定义面板。*和按钮。 。很多组件使用Button。属性。

尝试,玩,赢:)。祝你好运 :)。

PS:这是覆盖很多属性。但这就是LaFs的工作方式。

1

像JButton这样的一些控件需要调用setOpaque(false)来允许新的背景颜色淡入。

1

要列出所有我们可以设置UIManager更改的LaF,运行下面的代码可能的选项........

import java.util.*; 
    import javax.swing.UIManager; 

    public class UIManager_All_Put_Options 
    { 
    public static void main (String[] args) 
    { 
     Hashtable properties = UIManager.getDefaults(); 
     Enumeration keys  = properties.keys(); 

     while (keys.hasMoreElements()) { 
     String key = (String) keys.nextElement(); 
     Object value = properties.get (key); 
     System.out.printf("%-40s \t %-200s \n", key,value); 
     } 
    } 
    } 

享受...