2014-03-13 48 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