Java 使用GroupLayout后获取JComponent的正确大小
我想问的是,在将一个JPanel放置在另一个使用GroupLayout作为布局管理器的JPanel中之后,是否有可能获得正确大小的JPanel。我已经尝试使用: .getPreferredSize():这将导致我设置的首选大小,而不是在帧中的JPanel上绘制的实际大小(如果调整帧的大小,元素将水平展开;这在值中看不到) .getSize():它返回0 .getHeight():它返回0 .getWidth():返回0 也许代码的位置是相关的,但它是在屏幕上显示后执行的,所以这不重要 为了在屏幕上显示后强制它这样做,也许我可以使用EventQueue,但我不确定如何使用 谢谢你的回答 只有在渲染组件后,才可以通过调用顶级容器上的pack或setVisible(true)来获得组件的“正确”大小 也许代码的位置是相关的,但它是在屏幕上显示后执行的,所以这不重要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 也许代码的位置是相关的,但它是在屏幕上显示后执行的,所以这不重要 为了在屏幕
那就不对劲了。您确定要对可见组件调用这些方法,而不是对它们进行阴影处理的变量吗?如果没有代码,很难判断错误所在。实际上,
doLayout()
在具有一定大小的容器上也应该可以工作。也许,但是如果您阅读了API,则说明您不应该直接使用doLayout()。谢谢您的回答!我终于发现了问题,这是因为我的JPanel还没有显示出来,但是在启动所有元素之后,我可以得到正确大小的面板。PS:我忘了告诉你。我的程序如下:MainWindow包含不同的JPanel。我想在调整主窗口(包含框架)/框架的大小后编辑网格行的数量,最好使用什么方法?(我不熟悉调整大小后触发的操作)谢谢!