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

时间:2015-07-23 14:29:30

标签: java swing layout-manager boxlayout

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

最简单的方法是什么?

编辑:Pics已添加

所以JLabel看起来像所有组件可见

enter image description here

当我将右边的三个JPanel设置为不可见时,设置为文字JTextFields的{​​{1}}会向左移动,如下所示:

enter image description here

但我希望它能保持原样:

enter image description here

EDIT2 :我实际上正在为此特定JLabel使用Netbeans GUI编辑器的免费设计。我很抱歉这个错误 - 我最近一直在使用很多BoxLayouts而且我很困惑!

1 个答案:

答案 0 :(得分:4)

  

目前,JLabel向左移动,因为其他组件变得不可见。

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

否则,你可以解雇"其他组件"在使用CardLayout的面板中。然后,将面板与空面板交换,而不是使组件不可见。

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

编辑:

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

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

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

的更多信息