繁体   English   中英

Java-更改秋千背景颜色?

[英]Java- Changing swing background colour?

好的,我已经使用“系统”外观来启动了一个秋千应用程序。 现在,我想将主面板的背景颜色更改为黑色。 太容易了吧?

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

嗯,是的,除了现在应用程序中的控件看起来很愚蠢,因为它们的“阴影”(由于缺少更好的用词)逐渐向旧的系统默认颜色(粗大的窗口灰色)渐变。 因此,所有控件上都有浅灰色的“角”,尤其是JTabbedPane上的选项卡。 我知道它可以解决,因为如果您将WindowsXP主题更改为具有默认应用程序颜色的主题,则控件将采用这种更改的颜色,并且其阴影会逐渐淡入。

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

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

您可以尝试以下方法:

  • 控制
  • controlDkShadow
  • controlHighlight
  • controlLtHighlight
  • controlShadow

(我只是在此列表中找到它们: Swing [Archive]-UIManager:设置背景和JScrollBar

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

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

通常,属性名称的组成类似于

COMPONENT_NAME_WITHOUT_J + '.' + PROPERTY. 

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

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

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

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

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

这样的话会显示所有默认键:

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

诸如JButton之类的某些控件需要调用setOpaque(false)才能使新的背景色逐渐淡入。

要列出我们可以设置为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);
      }
    }
  }

请享用...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM