我只想在整个 UI 正常运行时运行线程,即。所有组件的paint()
已完成。
我尝试使用 SwingUtilities.invokeLater()
,但线程仍然在整个 UI 启动之前或当所有组件的 paint()
未完成时运行。
可能吗?
谢谢。
最佳答案
无法知道整个 UI 何时启动,主要是因为您编写了自己的众多组件,这些组件可能需要很长时间才能加载。
有SwingUtilities.invokeAndWait 。但时机将是一个问题。从某种意义上说,一旦您确定已经调用了设置 UI 的初始化代码,您就必须调用它。
一种方法可能是有一个检查标志。假设您有 5 个主要组件,每个组件一旦加载就会设置自己的检查标志(或者您可以使用持有该标志的 commons 类)。您的线程将继续等待所有 ckeckflags,然后继续。
您也可以使用 CountdownLatch,但我不推荐它。保持简单。
关于java - 仅当整个 UI 启动时才运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14826564/