Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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.awt.Toolkit.getDefaultToolkit().createImage(字节[])返回Null_Java_Image_Swing - Fatal编程技术网

java.awt.Toolkit.getDefaultToolkit().createImage(字节[])返回Null

java.awt.Toolkit.getDefaultToolkit().createImage(字节[])返回Null,java,image,swing,Java,Image,Swing,类javax.swing.ImageIcon有一个带有单个字节[]参数的构造函数。以下是该构造函数的部分代码: this.image=Toolkit.getDefaultToolkit().createImage(imageData); if(image==null){ 返回; } 有时,当我调用这个构造函数时,图像确实是空的,我不知道为什么。检查类java.awt.Toolkit的源代码显示方法createImage(byte[])调用抽象方法createImage(byte[],int,i

javax.swing.ImageIcon
有一个带有单个
字节[]
参数的构造函数。以下是该构造函数的部分代码:

this.image=Toolkit.getDefaultToolkit().createImage(imageData);
if(image==null){
返回;
}
有时,当我调用这个构造函数时,
图像
确实是空的,我不知道为什么。检查类
java.awt.Toolkit
的源代码显示方法
createImage(byte[])
调用抽象方法
createImage(byte[],int,int)
。通过我的调试,类
java.awt.Toolkit
的静态方法
getDefaultToolkit()
返回
sun.awt.windows.WToolkit
的一个实例,其超类是
sun.awt.SunToolkit
,该类包含方法
createImage(byte[],int,int)
的实现。我在Internet上搜索class
sun.awt.SunToolkit
中方法
createImage(byte[],int,int)
的源代码,发现它只包含一行:

返回createImage(新的ByteArrayImageSource(数据、偏移量、长度));
现在,我可能会错过一些东西。Class
sun.awt.image.ByteArrayImageSource
扩展Class
sun.awt.image.InputStreamImageSource
和Class
sun.awt.image.InputStreamImageSource
实现接口
sun.awt.image.ImageProducer
,因此我认为该方法
创建图像(新的ByteArrayImageSource(数据、偏移、长度)
在类
SunToolkit
中引用了方法
createImage(ImageProducer)
。我已经查看了方法
createImage(ImageProducer)
的源代码以及
ByteArrayImageSource
构造函数的代码,我看不出为什么有
createImage()
方法将返回null。顺便说一下,类
InputStreamImageSource
没有构造函数

所以我的问题是:为什么
java.awt.Toolkit.getDefaultToolkit().createImage(byte[])
有时会返回null

请注意,我无法提供示例代码来重现问题,因为有时相同的字节数组会导致创建图像,有时则不会。基本上,我只是调用
ImageIcon
构造函数并向其传递字节数组


这是一个Swing应用程序,所有代码都在事件调度线程(EDT)上运行。

是异步创建映像的方法吗?文档中没有说明它是异步创建的,但是从内存中可以看到许多涉及映像加载的
工具包
方法。请尝试将其添加到。@andrewhompson如何发现是否调用
new ImageIcon(字节)
正在异步创建映像吗?关于你的建议:尝试将其添加到MediaTracker中。你能给我指一个示例代码来说明如何实现这一点吗?“我没有映像”那么什么是
this.image=Toolkit.getDefaultToolkit().createImage(imageData);
?@andrewhompson我的问题是该方法
createImage()
返回null。如果我错了,请纠正我,但如果该方法返回null,则意味着我没有图像,不是吗?