我有JPanel
使用水平Box布局并包含JLabel
,我希望与JPanel
中的其他组件{{1}保持完全相同的位置}}。目前,setVisible(false)
向左移动,因为其他组件变得不可见。
最简单的方法是什么?
编辑:Pics已添加
所以JLabel
看起来像所有组件可见
当我将右边的三个JPanel
设置为不可见时,设置为文字JTextFields
的{{1}}会向左移动,如下所示:
但我希望它能保持原样:
EDIT2 :我实际上正在为此特定JLabel
使用Netbeans GUI编辑器的免费设计。我很抱歉这个错误 - 我最近一直在使用很多BoxLayouts而且我很困惑!
答案 0 :(得分:4)
目前,JLabel向左移动,因为其他组件变得不可见。
是的,布局管理器仅适用于可见组件。我不确定是否有任何默认布局管理器可以工作,但是我会考虑使用GridBagLayout
,因为这个布局基于网格结构,只要你在那个网格中有组件另一行标签不应该移动。
否则,你可以解雇"其他组件"在使用CardLayout
的面板中。然后,将面板与空面板交换,而不是使组件不可见。
阅读How to Use CardLayout上Swing教程中的部分,了解更多信息和工作示例。
编辑:
根据您的图片,最简单的解决方案是使用" glue":
panel.add(Box.createHorizontalGlue);
panel.add(xLabel);
现在标签将始终显示在面板的最右侧。阅读How to Use BoxLayout上的教程,了解有关" glue"。
的更多信息