有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

那么,等待图像完全加载的代码会是什么样子呢

我想要一个像这样的方法

public void waitUntilLoaded(Image img){
    ...
}

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


共 (3) 个答案

  1. # 1 楼答案

    使用^{}并重写其^{}方法,而不是ImageObserver

    这是假设您可以将代码更改为使用^{}来实际读取它(使用^{}的一个静态方法创建)

  2. # 2 楼答案

    一个好的选择是java.awt.MediaTracker。有一个很好的代码示例in the API documentation。简而言之,您可以创建一个MediaTracker对象来跟踪组件的图像,告诉它要跟踪哪些图像,然后调用tracker.waitForID(n),直到指定的图像完成加载为止

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

  3. # 3 楼答案

    我发现的另一种选择是等待img.getWidth()返回一个不同于-1的值。您可以通过使用Threadswhile循环以更简洁的方式完成这项工作