将组件保持在 BoxLayout 中的固定位置
Keeping a component in a fixed position within a BoxLayout
我有一个 JPanel
,它使用水平 Box 布局并包含一个 JLabel
,我希望它与 JPanel
中的其他组件保持在完全相同的位置 setVisible(false)
。目前,JLabel
向左移动,因为其他组件变得不可见。
最简单的方法是什么?
编辑:已添加图片
这就是 JPanel
所有组件可见的样子
当我将右侧的三个JTextFields
设置为不可见时,设置为文本X
的JLabel
像这样向左移动:
但我希望它保持原样:
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".
的更多信息
我有一个 JPanel
,它使用水平 Box 布局并包含一个 JLabel
,我希望它与 JPanel
中的其他组件保持在完全相同的位置 setVisible(false)
。目前,JLabel
向左移动,因为其他组件变得不可见。
最简单的方法是什么?
编辑:已添加图片
这就是 JPanel
所有组件可见的样子
当我将右侧的三个JTextFields
设置为不可见时,设置为文本X
的JLabel
像这样向左移动:
但我希望它保持原样:
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".
的更多信息