我有一个显示/隐藏jPanel的按钮,然后调用pack();但是在隐藏了面板和面板右边的jPanel水平间隙后,该面板的右侧会加起来并在右边创建一个巨大的水平间隙。
我使用的是边框布局的默认布局。
private void normalDistributionTableToggleActionPerformed(java.awt.event.ActionEvent evt) {
normalDistributionTablePanel.setVisible(!normalDistributionTablePanel.isVisible());
pack();
revalidate();
repaint();
System.out.println("Toggle normal distribution table.");
}
答案 0 :(得分:1)
我使用的是边框布局的默认布局。
您正在使用不同的布局管理器嵌套面板。如果您看到显示两个组件的第二张图像,您会看到右侧的间隙比左侧大。
一些布局管理器(如FlowLayout)将正确处理组件的可见性,因此右侧的间隙将保持不变。
另一方面,如果您使用像BoxLayout这样的布局管理器并添加一个"水平支柱"在组件之间,当你隐藏面板时,你会知道有两个支柱在一起,这将增加间隙。
如果您使用IDE生成代码,那么我没有IDE GroupLayout代码正在做什么,但我建议您不要使用IDE并手动编写布局代码,以便更好地控制它
如果没有看到简单的演示代码(SSCCE / MCVE),我们无法提供具体的解决方案。