我需要获取Windows外观下TableHeader
的默认背景颜色,我已经尝试过以下方法:
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
System.out.println(UIManager.getColor("TableHeader.background"));
catch (Exception e) {
e.printStackTrace();
}
但是它只返回默认颜色(即Metal主题)。我如何从特定的 LookAndFeel
中获取组件的背景颜色?
附注:
在这种情况下
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
是相同的
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
编辑:
好的,我找到了它为什么返回 TabHeaader.background
的“错误”值的原因。那是因为我想要的颜色不是 TabHeader.background
或 TabHeader.foreground
。但有人知道如何获取“背景”的颜色吗?
编辑 2:
我发现,如果您使用默认主题,则 header.setBackground(COLOR);
可以正常工作。但是当我将 LookAndFeel
设置为 Windows 外观时,header.setBackground(COLOR)
会改变边框颜色。
setLookAndFeel
的参数中使用了com.sun.java.swing.plaf.windows.WindowsLookAndFeel
吗? - Marco R.getSystemLookAndFeelClassName
的调用很可能返回javax.swing.plaf.metal
;因为这是你获取的外观和感觉(除非你有其他默认设置)。仅仅因为你在Windows上并不意味着Swing已经配置为使用Windows外观和感觉,所以尝试硬编码字符串。 - Marco R.