我需要获取TableHeader
但Windows LookAndFeel
的默认背景色。我已经尝试过:
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
System.out.println(UIManager.getColor("TableHeader.background"));
catch (Exception e) {
e.printStackTrace();
}
但是它只返回默认颜色(因此是Metal主题之一)。如何从特定的
LookAndFeel
获取组件的背景色?PS。
在这种情况下
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
是相同的
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
编辑:
好的,我发现了,为什么它返回
TabHeaader.background
的“错误”值。那是因为我想要的颜色不是TabHeader.background
或TabHeader.foreground
。但是,有人知道如何获得“背景”的颜色吗?编辑2:
我发现,如果您使用默认主题,则
header.setBackground(COLOR);
可以使用。但是,当我在Windows上设置LookAndFeel
时,header.setBackground(COLOR)
的外观会更改边框颜色。 最佳答案
Windows外观在 LookAndFeel
类 com.sun.java.swing.plaf.windows.WindowsLookAndFeel
中定义。您可以通过以完全限定的类名作为参数调用UIManager.setLookAndFeel
来使用它:
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
System.out.println(UIManager.getColor("TableHeader.background"));
} catch (Exception ex) {
// HANDLE EXCEPTION
}
这是Swing框架中可用外观的列表:https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#available
希望这可以帮助。