在 Java 中,我只对一个 JComponent(及其 children)使用不同的 LookAndFeel

In Java I use a different LookAndFeel for just a single JComponent (and its children)

在Java我用

UIManager.setLookAndFeel(
                    UIManager.getSystemLookAndFeelClassName()

获得系统外观

但是我使用的是 JTable,在 Windows 和 Windows LAF 以及 OSX 和 OSX LAF 上有问题,所有问题看起来都已解决如果我只使用

UIManager.getCrossPlatformLookAndFeelClassName();

是否可以让我的 JTable 和它包装的 JScrollPane 使用 跨平台 外观而不影响其他任何东西。

如果是这样,这真的是个坏主意吗?

我遇到的问题是

Windows,列 Header 渲染几乎与常规无法区分 table 个细胞

OSX,单元格背景颜色与面板背景相同

OSX,table 个单元格之间没有网格线。

组件的 LAF 在创建组件时确定。

所以你可以尝试这样的事情:

  1. 设置临时 LAF
  2. 创建组件并将它们添加到框架中。
  3. 恢复 LAF

And if so is this a really bad idea ?

不确定是否存在隐藏问题。