Java-改变秋千背景颜色?

时间:2008-10-14 05:44:29

标签: java swing colors background

好的,所以我有一个使用“系统”外观和感觉的摇摆应用程序。现在,我想将主面板的背景颜色更改为黑色。太容易吧?

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

嗯,是的,除了现在应用程序中的控件看起来很愚蠢,因为他们的'阴影',因为缺少一个更好的单词,渐渐渐渐淡化为旧的系统默认颜色(总窗口灰色)。所以在所有控件上都有浅灰色的“角”,尤其是JTabbedPane上的标签。 我知道它可以修复,因为如果你将windowsXP主题更改为具有不同默认应用程序颜色的主题,控件将采用这种更改的颜色,并且它们的阴影会“淡化”。

但我不知道它是什么UIManager键,或者即使你可以用UIManger做到这一点。

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

5 个答案:

答案 0 :(得分:2)

你可以试试这些:

  • control
  • controlDkShadow
  • controlHighlight
  • controlLtHighlight
  • controlShadow

(我刚在这个列表中找到它们:Swing [Archive] - UIManager: setting background and JScrollBar

答案 1 :(得分:2)

总的来说这有点棘手。这取决于您使用的确切LaF。

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

通常,属性名称由

组成
COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

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

许多帮助使重新定义Panel。*和Button。。很多组件都使用Button。属性。

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

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

答案 2 :(得分:1)

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

所以这样的事情会显示所有默认密钥:

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

答案 3 :(得分:1)

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

答案 4 :(得分: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);
      }
    }
  }

...享受