为了账号安全,请及时绑定邮箱和手机立即绑定

Java GridBagLayout 正在调整其自身之外的对象的大小

Java GridBagLayout 正在调整其自身之外的对象的大小

呼啦一阵风 2023-07-19 15:55:23
我正在使用GridBagLayoutfor 我的程序的一部分。当我将界面的这一部分添加到程序中时,它会调整界面其余部分的大小并使其看起来很愚蠢。这是添加和未添加网格包布局的并排界面。如您所见,将网格包布局对象添加到界面会调整框架中其他对象的大小。下面是我希望的界面:(我在 MS Paint 中很快就完成了这个,而不是使用代码。)我是否需要将整个界面切换为网格包布局,或者是否可以在不这样做的情况下执行此操作?
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

问题不在于 GridBagLayout。


问题是您在父面板(在我看来您可能正在使用 GridLayout)和框架左侧部分使用的面板上使用的布局管理器。


问题在于右侧面板的首选高度大于左侧面板的首选高度。然后,您使用的布局管理器将为左侧面板上的所有组件添加额外的高度。同样,您没有告诉我们您正在使用什么布局管理器,但我猜测是 GridLayout 或 BoxLayout,并且布局管理器正在调整组件大小以填充额外的可用空间。


所以解决方案是更有效地使用布局管理器。


所以我会保留框架的默认 BorderLayout,然后你的基本逻辑将是这样的:


JPanel rightPanel = new JPanel(); // use your GridBagLayout.

frame.add(rightPanel, BorderLayout.CENTER);


JPanel leftPanel = new JPanel(); // use you current layout

JPanel wrapper = new JPanel(new BorderLayout()); 

wrapper.add(leftPanel, BorderLayout.PAGE_START);

frame.add(wrapper, Border.LINE_START);

现在,包装面板将遵循 leftPanel 的首选高度。因此,即使 rightPanel 更大,组件也不会被拉伸。


查看完整回答
反对 回复 2023-07-19
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信