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 更大,组件也不会被拉伸。
添加回答
举报
0/150
提交
取消