如何等待图像在 Java 中完全加载

Jen*_*der 4 java concurrency image

Java 图像 API 假设异步加载。各种方法将 ImageObserver 作为参数,一旦图像完全加载,可能会得到通知。

另一方面,某些类型的图像(例如 BufferedImages)不使用 ImageObserver 并且永远不会调用它。

那么等待图像完全加载的代码看起来如何呢?

我想要一个方法

public void waitUntilLoaded(Image img){
    ...
}
Run Code Online (Sandbox Code Playgroud)

这保证了图像在返回时完全加载。

eaj*_*eaj 6

一个不错的选择是java.awt.MediaTrackerAPI 文档中有一个很好的代码示例。简而言之,您创建一个 MediaTracker 对象来跟踪组件的图像,告诉它您要跟踪哪些图像,然后调用tracker.waitForID(n)which 将阻塞,直到指定的图像完成加载。

显然,您需要将其排除在事件线程之外——但您知道这一点。:)