2014-03-13 81 views
1

我在做一個計算器。我用了一個GridBagLayout安排按鈕,到目前爲止,它看起來像這樣:如何獲取GridBagLayout的尺寸?

normal calculator look

我試圖找到網格的確切大小,所以我可以設置JFrame的大小相匹配。在GridBagLayout API中,我找到了三種方法:maximumLayoutSize,minimumLayoutSizepreferredLayoutSize。我試了所有三個,並設置JFrame到每個尺寸,看看他們是如何工作的:

當我看着由maximumLayoutSize返回的尺寸,他們是巨大的(百萬和十億)。

當我使用minimumLayoutSize返回的尺寸,我得到寬度= 151,高度= 150,其看起來像這樣:

enter image description here

當我使用preferredLayoutSize返回的尺寸,我得到寬度= 220,高度= 180,它看起來像這樣:

enter image description here

相反,我希望的GridBagLayout的尺寸時,它看起來像正常它是在第一張照片。我怎樣才能獲得這些尺寸?

+1

經典[XY問題](http://meta.stackexchange.com/q/66377/155831)的很好的描述(圖片描繪了千言萬語)。 +1 –

+1

這是一個很好的閱讀。回想我以前的問題,我現在已經做了幾次。 – joshreesjones

+0

*「我現在已經做了幾次」*我也是。 :) –

回答

4

打電話,JFrame#pack,它會基於幀裝飾的需要和幀內容的首選大小打包幀。

+0

如果我包含frame.pack(),可以忽略frame.setSize(width,height)嗎? – joshreesjones

+0

@ mathguy54絕對的,你應該很少需要在窗口上調用setSize ... – MadProgrammer

+0

我應該總是使用'pack()'嗎?過去,我使用'setSize()'作爲我的所有窗口,並將組件添加到不同的'BorderLayout'區域。 – joshreesjones