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 使用的是什么,我在代码中看不到定义。
所以我的问题是:
- 我需要什么布局管理器来将 JPanel 设置为以相同方式对齐?
- 我可以使用哪个最相似的 LayoutManager 来达到相同的效果?
编辑
好吧,我基本上是通过从 BasicStatusBarUI
入侵内部 LayoutManager class 来工作的,但我想我更愿意只使用标准的 LayoutManager,这可能吗?
将 flatlaf-swingx.jar
添加到您的项目中,然后 JXStatusBar
可以与 FlatLaf 一起正常工作:
我在 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 使用的是什么,我在代码中看不到定义。
所以我的问题是:
- 我需要什么布局管理器来将 JPanel 设置为以相同方式对齐?
- 我可以使用哪个最相似的 LayoutManager 来达到相同的效果?
编辑
好吧,我基本上是通过从 BasicStatusBarUI
入侵内部 LayoutManager class 来工作的,但我想我更愿意只使用标准的 LayoutManager,这可能吗?
将 flatlaf-swingx.jar
添加到您的项目中,然后 JXStatusBar
可以与 FlatLaf 一起正常工作: