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

Removing right horizontal gap from hidden jPanel

我有一个按钮 show/hides 一个 jPanel 然后调用 pack();但是在隐藏面板之间的 jPanel 水平间隙和该面板右侧的间隙后,在右侧产生了一个巨大的水平间隙。

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

这是现在发生的事情:

隐藏 jPanel 后我希望它看起来像什么

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

I am using default layout which is border layout.

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

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

另一方面,如果您使用像 BoxLayout 这样的布局管理器并在组件之间添加一个 "horizontal strut",那么当您隐藏面板时,您将知道有两个 struts 在一起,这将使差距扩大。

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

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