将组件保持在 BoxLayout 中的固定位置

Keeping a component in a fixed position within a BoxLayout

我有一个 JPanel,它使用水平 Box 布局并包含一个 JLabel,我希望它与 JPanel 中的其他组件保持在完全相同的位置 setVisible(false)。目前,JLabel 向左移动,因为其他组件变得不可见。

最简单的方法是什么?

编辑:已添加图片

这就是 JPanel 所有组件可见的样子

当我将右侧的三个JTextFields设置为不可见时,设置为文本XJLabel像这样向左移动:

但我希望它保持原样:

EDIT2:我实际上正在为这个特定的 JLabel 使用 Netbeans GUI 编辑器的免费设计。对于这个错误,我很抱歉 - 我最近使用了很多 BoxLayouts,但我感到困惑!

Currently, the JLabel moves to the left as other components become invisible.

是的,布局管理器旨在仅处理可见组件。我不确定是否有任何默认布局管理器可以工作,但我会考虑使用 GridBagLayout,因为此布局基于网格结构,所以只要您在另一行的网格中有组件标签不应移动。

否则,您可以使用 CardLayout 在面板中显示 "other components"。然后,不是使组件不可见,而是将面板替换为空面板。

阅读有关 How to Use CardLayout 的 Swing 教程部分,了解更多信息和工作示例。

编辑:

根据您的图片,最简单的解决方案是使用 "glue":

panel.add(Box.createHorizontalGlue);
panel.add(xLabel);

现在标签将始终显示在面板的最右侧。阅读 How to Use BoxLayout 上的教程,了解有关 "glue".

的更多信息