JXStatusBar 约束的替换 LayoutManager 或与 JPanel 一起使用的方式

Replacement LayoutManager for JXStatusBar Constraints or way to use with JPanel

我在 Windows 上使用 swingx 库 我现在正朝着在所有平台上使用 Flatlaf 明暗外观

这在 MacOS 上看起来不错,但在 Windows 上,状态栏看起来与 Windows 外观和感觉一样,但看起来不正确。

这是因为我使用的是 swingx JXStatusBar 组件,它有一些外观和感觉增强功能,包括一些 Windows 用于背景的特定图像

例如swingx\swingx-core\src\main\resources\org\jdesktop\swingx\plaf\windows\resources\silver-statusbar-left.png

尝试更改组件的背景颜色或我添加的标签无效。

所以我认为最好的办法是放弃使用 JXStatusBar 并只使用 JPanel,但继续使用 JXStatusBar.Constraint

以相同的方式添加组件
        component = new JPanel();
        .....
        JXStatusBar.Constraint c1 = new JXStatusBar.Constraint();
        c1.setFixedWidth(100);
        component.add(statusLabel, c1);

        JXStatusBar.Constraint c2 = new JXStatusBar.Constraint(JXStatusBar.Constraint.ResizeBehavior.FILL);
        c2.setFixedWidth(200);

        JXStatusBar.Constraint c4 = new JXStatusBar.Constraint(130);

        component.add(filesLoadedLabel, c2);
        component.add(filesFilteredLabel, c2);
        component.add(tagBrowserFilterLabel, c2);
        component.add(activeFiltersLabel, c2);
        component.add(mbDelayLabel, c4);
        component.add(memoryLabel, c4);

然而,正如上面的屏幕截图所示,这无法正常工作,可能是因为我使用了错误的 LayoutManager,但我无法弄清楚 LayoutManager JXStatusBar 使用的是什么,我在代码中看不到定义。

所以我的问题是:

编辑

好吧,我基本上是通过从 BasicStatusBarUI 入侵内部 LayoutManager class 来工作的,但我想我更愿意只使用标准的 LayoutManager,这可能吗?

flatlaf-swingx.jar 添加到您的项目中,然后 JXStatusBar 可以与 FlatLaf 一起正常工作:

参见 FlatLaf addon for SwingXissue #492