2008-10-14 85 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); 
     } 
    } 
    } 

享受...