Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用GroupLayout后获取JComponent的正确大小_Java_Size_Layout Manager_Grouplayout - Fatal编程技术网

Java 使用GroupLayout后获取JComponent的正确大小

Java 使用GroupLayout后获取JComponent的正确大小,java,size,layout-manager,grouplayout,Java,Size,Layout Manager,Grouplayout,我想问的是,在将一个JPanel放置在另一个使用GroupLayout作为布局管理器的JPanel中之后,是否有可能获得正确大小的JPanel。我已经尝试使用: .getPreferredSize():这将导致我设置的首选大小,而不是在帧中的JPanel上绘制的实际大小(如果调整帧的大小,元素将水平展开;这在值中看不到) .getSize():它返回0 .getHeight():它返回0 .getWidth():返回0 也许代码的位置是相关的,但它是在屏幕上显示后执行的,所以这不重要 为了在屏幕

我想问的是,在将一个JPanel放置在另一个使用GroupLayout作为布局管理器的JPanel中之后,是否有可能获得正确大小的JPanel。我已经尝试使用:

.getPreferredSize():这将导致我设置的首选大小,而不是在帧中的JPanel上绘制的实际大小(如果调整帧的大小,元素将水平展开;这在值中看不到)

.getSize():它返回0

.getHeight():它返回0

.getWidth():返回0

也许代码的位置是相关的,但它是在屏幕上显示后执行的,所以这不重要

为了在屏幕上显示后强制它这样做,也许我可以使用EventQueue,但我不确定如何使用

谢谢你的回答

只有在渲染组件后,才可以通过调用顶级容器上的pack或setVisible(true)来获得组件的“正确”大小

也许代码的位置是相关的,但它是在屏幕上显示后执行的,所以这不重要


那就不对劲了。您确定要对可见组件调用这些方法,而不是对它们进行阴影处理的变量吗?如果没有代码,很难判断错误所在。

实际上,
doLayout()
在具有一定大小的容器上也应该可以工作。也许,但是如果您阅读了API,则说明您不应该直接使用doLayout()。谢谢您的回答!我终于发现了问题,这是因为我的JPanel还没有显示出来,但是在启动所有元素之后,我可以得到正确大小的面板。PS:我忘了告诉你。我的程序如下:MainWindow包含不同的JPanel。我想在调整主窗口(包含框架)/框架的大小后编辑网格行的数量,最好使用什么方法?(我不熟悉调整大小后触发的操作)谢谢!