2012-08-17 111 views
9

我应该如何在JFrame中获得真正的JPanel大小?如何获得真正的JPanel大小?

+6

“通过调用['getSize()'](http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#getSize%28%29)”。该方法可能在被实现之前被调用。有关更具体的建议,请发布[SSCCE](http://sscce.org/)。 – 2012-08-17 17:57:04

+1

正如@安德鲁所说。但是你不能这样做,直到它被渲染。 – km1 2012-08-17 18:00:10

回答

16

大小将0,0直到它显示,因为组件和布局不事先计算。

+0

jPanel的子组件在获得其真实的宽度和高度后是否有任何回调来初始化子组件? – 2018-01-02 06:45:02

8

thePanel.getSize();

这将返回维度。

我有时会添加一个ComponentListener以在面板调整大小时显示尺寸。

编辑:如果您想JFrame的内容窗格的大小,然后

theFrame.getContentPane().getSize(); 
+1

它没有给出真正的大小java.awt.Dimension [width = 0,height = 0]我之前用 – Yoda 2012-08-17 17:59:34

+0

@RobertKilar km半回答了你的问题,在你感兴趣的面板中添加一个ComponentLsterner并监控componentResized事件 – MadProgrammer 2012-08-17 21:09:10

+1

@RobertKilar你可能在渲染前获得了大小。尝试组件侦听器的resize事件处理程序。 – km1 2012-08-18 01:36:33