从隐藏的jPanel中删除右侧水平间隙

时间:2016-10-28 12:19:51

标签: java swing jpanel

我有一个显示/隐藏jPanel的按钮,然后调用pack();但是在隐藏了面板和面板右边的jPanel水平间隙后,该面板的右侧会加起来并在右边创建一个巨大的水平间隙。

我使用的是边框布局的默认布局。

以下是现在发生的事情: enter image description here

隐藏jPanel后,我希望它看起来如何 enter image description here

private void normalDistributionTableToggleActionPerformed(java.awt.event.ActionEvent evt) {                                                              
    normalDistributionTablePanel.setVisible(!normalDistributionTablePanel.isVisible());
    pack();
    revalidate();
    repaint();
    System.out.println("Toggle normal distribution table.");
}  

1 个答案:

答案 0 :(得分:1)

  

我使用的是边框布局的默认布局。

您正在使用不同的布局管理器嵌套面板。如果您看到显示两个组件的第二张图像,您会看到右侧的间隙比左侧大。

一些布局管理器(如FlowLayout)将正确处理组件的可见性,因此右侧的间隙将保持不变。

另一方面,如果您使用像BoxLayout这样的布局管理器并添加一个"水平支柱"在组件之间,当你隐藏面板时,你会知道有两个支柱在一起,这将增加间隙。

如果您使用IDE生成代码,那么我没有IDE GroupLayout代码正在做什么,但我建议您不要使用IDE并手动编写布局代码,以便更好地控制它

如果没有看到简单的演示代码(SSCCE / MCVE),我们无法提供具体的解决方案。