好的,所以我有一个使用“系统”外观和感觉的摇摆应用程序。现在,我想将主面板的背景颜色更改为黑色。太容易吧?
UIManager.put("Panel.background", Color.BLACK);
嗯,是的,除了现在应用程序中的控件看起来很愚蠢,因为他们的'阴影',因为缺少一个更好的单词,渐渐渐渐淡化为旧的系统默认颜色(总窗口灰色)。所以在所有控件上都有浅灰色的“角”,尤其是JTabbedPane上的标签。 我知道它可以修复,因为如果你将windowsXP主题更改为具有不同默认应用程序颜色的主题,控件将采用这种更改的颜色,并且它们的阴影会“淡化”。
但我不知道它是什么UIManager键,或者即使你可以用UIManger做到这一点。
我真的不想改变L& F引擎,因为除此之外看起来还不错。
答案 0 :(得分:2)
你可以试试这些:
(我刚在这个列表中找到它们: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);
}
}
}
...享受