首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java GridBagLayout正在调整自身外部的对象大小。

Java GridBagLayout正在调整自身外部的对象大小。
EN

Stack Overflow用户
提问于 2019-09-08 13:44:53
回答 1查看 54关注 0票数 1

我正在使用GridBagLayout作为我程序的一部分。当我将接口的这一部分添加到程序中时,它会调整接口其余部分的大小,并使其看起来很傻。

这是一个并排的界面,添加了网格包布局和不添加网格包布局。

如您所见,将网格袋布局对象添加到界面会调整框架中其他对象的大小。

下面是我希望的界面:

(我在MS Paint中做得非常快,而不是用代码。)

我是否需要将整个界面切换到网格包布局,或者是否可以在没有网格包的情况下实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-09 01:38:32

问题不在GridBagLayout。

问题出在您在父面板上使用的布局管理器(在我看来,您可能正在使用GridLayout)以及在框架左侧使用的面板上。

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

因此,解决方案是更有效地使用布局管理器。

因此,我将保留框架的默认BorderLayout,然后您的基本逻辑将如下所示:

代码语言:javascript
运行
复制
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更大,组件也不会被拉伸。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57839473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档