从隐藏的 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),我们无法给出具体的解决方案。
我有一个按钮 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),我们无法给出具体的解决方案。