2

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

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

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

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

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

4

5 回答 5

2

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

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

通常,属性名称的组成如下

COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

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

很多帮助使得重新定义 Panel.* 和 Button。. 很多组件都使用 Button。特性。

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

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

于 2008-10-16T20:01:35.857 回答
2

你可以试试这些:

  • 控制
  • 控制DkShadow
  • 控制高亮
  • controlLt高亮
  • 控制阴影

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

于 2008-10-14T06:08:49.593 回答
1

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

所以像这样的东西会显示所有的默认键:

for (Object key: UIManager.getDefaults().keySet())
{
    System.out.println(key);
}
于 2008-10-14T05:56:24.330 回答
1

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

于 2010-10-29T00:38:42.547 回答
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);
      }
    }
  }

请享用...

于 2011-05-19T04:40:55.470 回答