1 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
問題不在于 GridBagLayout。
問題是您在父面板(在我看來您可能正在使用 GridLayout)和框架左側(cè)部分使用的面板上使用的布局管理器。
問題在于右側(cè)面板的首選高度大于左側(cè)面板的首選高度。然后,您使用的布局管理器將為左側(cè)面板上的所有組件添加額外的高度。同樣,您沒有告訴我們您正在使用什么布局管理器,但我猜測(cè)是 GridLayout 或 BoxLayout,并且布局管理器正在調(diào)整組件大小以填充額外的可用空間。
所以解決方案是更有效地使用布局管理器。
所以我會(huì)保留框架的默認(rèn) 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);
現(xiàn)在,包裝面板將遵循 leftPanel 的首選高度。因此,即使 rightPanel 更大,組件也不會(huì)被拉伸。
添加回答
舉報(bào)