Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 完成布局时调用的方法?_Java_Swing_Layout - Fatal编程技术网

Java 完成布局时调用的方法?

Java 完成布局时调用的方法?,java,swing,layout,Java,Swing,Layout,我正在寻找一个我可以重写的方法,或者一个在JPanel被布局时被触发的侦听器。检查了javadoc,但找不到。情况是这样的: 我有一个组件,它通过一个空布局来处理它的内容。 然而,组件本身被布置在另一个带有布局管理器的JPanel中,并在布置完成时接收一定的大小。 现在我想使用这个大小来计算空布局JPanel内容的宽度和高度。 但我当然需要知道什么时候需要重新计算尺寸。有什么想法或好的替代方法吗?在空布局中所需的计算实际上非常简单,使用布局管理器可能需要比当前解决方案更多的工作-我只需要找到该方

我正在寻找一个我可以重写的方法,或者一个在JPanel被布局时被触发的侦听器。检查了javadoc,但找不到。情况是这样的:

我有一个组件,它通过一个空布局来处理它的内容。 然而,组件本身被布置在另一个带有布局管理器的JPanel中,并在布置完成时接收一定的大小。 现在我想使用这个大小来计算空布局JPanel内容的宽度和高度。
但我当然需要知道什么时候需要重新计算尺寸。有什么想法或好的替代方法吗?在空布局中所需的计算实际上非常简单,使用布局管理器可能需要比当前解决方案更多的工作-我只需要找到该方法或侦听器。

回答我自己的问题,这样就可以结束


当需要布局时,将调用doLayout,因此在没有布局管理器的情况下进行布局时,这是可以替代的方法。

不要在组件上使用setSize、setLocation或setBounds。您应该依赖于适当的布局管理器。现代UI预计将在不同的平台上运行,具有不同的屏幕分辨率、dpi、字体度量和渲染管道,所有这些都会影响屏幕上文本的大小…-MadProgrammer@Solace当前位置仔细考虑后,我同意了。虽然我的方法可能大部分时间都有效,但我的总体目标是随时提高我的编码技能,因此我认为我将不得不使用布局管理器。这将是更多的工作,但它肯定是清洁的。@AyCe您的欢迎@程序员:为了这个问题,我仍然对答案感兴趣。我可以使用什么方法来检测是否需要重新布局?在布局过程中调用invalidate和doLayout。您必须进行一些挖掘,但我相信一旦调用invalidate,就有可能调用容器来提供大小提示……为什么不编写自己的布局管理器呢?