如何在Java中等待映像完全加载
Java映像API假定异步加载。各种方法将ImageObserver作为一个参数,一旦图像完全加载,它可能会得到通知
另一方面,某些类型的图像(例如BuffereImage)不使用ImageObserver,并且永远不会调用它
那么,等待图像完全加载的代码会是什么样子呢
我想要一个像这样的方法
public void waitUntilLoaded(Image img){
...
}
这保证了图像返回时完全加载
你可以在下面搜索框中键入要查询的问题!
Java映像API假定异步加载。各种方法将ImageObserver作为一个参数,一旦图像完全加载,它可能会得到通知
另一方面,某些类型的图像(例如BuffereImage)不使用ImageObserver,并且永远不会调用它
那么,等待图像完全加载的代码会是什么样子呢
我想要一个像这样的方法
public void waitUntilLoaded(Image img){
...
}
这保证了图像返回时完全加载
# 1 楼答案
使用^{} 并重写其^{} 方法,而不是
ImageObserver
这是假设您可以将代码更改为使用^{} 来实际读取它(使用^{} 的一个静态方法创建)
# 2 楼答案
一个好的选择是
java.awt.MediaTracker
。有一个很好的代码示例in the API documentation。简而言之,您可以创建一个MediaTracker对象来跟踪组件的图像,告诉它要跟踪哪些图像,然后调用tracker.waitForID(n)
,直到指定的图像完成加载为止显然,您需要将其排除在事件线程之外,但您知道。:)
# 3 楼答案
我发现的另一种选择是等待
img.getWidth()
返回一个不同于-1的值。您可以通过使用Threads
和while
循环以更简洁的方式完成这项工作