Swing - 更改 Windows 主题会重置自定义边框、插图和背景

Swing - Changing the Windows Theme resets custom border, insets and backgrounds

更改 windows 主题/设计时,UI 会对这些更改作出反应,重置自定义组件背景、边框和插图。

例如,我们有一些 JScrollPane,其中我们将 Border 设置为 null。每个 JScrollPanes Border 都会重置为其自定义值,这是非 null.

的值

通过 UIManager.put(...) 设置给定的键也不会显示任何效果,因为 UIManager 值不会应用于此类重置。

除了编写自定义 L&F 之外,是否有任何方法可以绕过这些自动重置,这对于这种最小的好处来说会花费太长时间,有什么方法可以解决这个问题吗?

一些运行时信息(以防有人想知道):

Look-n-Feel 的重置提供了所有边框、颜色、字体等的全局重置。尤其是当它们重置为 null 时。因此,如果你想保护你的边界不受此重置的影响,你需要替换:

myComponent.setBorder(null);

myComponent.setBorder(BorderFactory.createEmptyBorder());