2013-11-09 150 views
1

在什么情况下我想使用ImageIcon来表示图片文件而不是图片对象?我一直在寻找,我曾经看到有人说你在处理图像时会使用一个ImageIcon对象,但是我仍然不明白这一点的含义。换句话说,两种对象类型之间的实际区别是什么,它们各自适合什么情况?为什么使用ImageIcon而不是Image?

回答

2

Image是一个表示位图的对象:不同颜色的像素数组。

Icon是一个可以绘制矩形图形的对象。由于它是一个界面(也是一个简单的界面),您可以想象许多不同类型的图标:绘制预定义的矢量图形,动态生成图像等。因此它是一个有用的抽象,并被Swing组件(按钮,标签)。

ImageIcon是一个对象,它是一个Icon,但HAS-A Image。那就是 - 它根据特定图像绘制图形。

当你说“为什么我应该使用ImageIcon而不是图像”时,你会错过这个观点:事实上,你正在使用一种Image

2

Image是表示图片的数据模型的对象。 ImageIcon是一个Swing组件,它在屏幕上绘制一个Image,并且您必须提供相应的Image以进行绘制(通过传入现有的Image或为其提供足够的信息以查找和加载图像)。

该关系类似于StringJTextField之间的关系;一个是数据的表示,另一个是将其绘制在屏幕上的图形组件。

1

该实现不会阻塞Swing线程。

使用MediaTracker预装载从URL,文件名或字节数组创建的图像,以监视图像的加载状态。

基本上,你可以设置一个按钮的ImageIcon,而不需要事先强制它被加载。

这可以通过有一个非常大的图标和框架的图标设置为这个图像看到。一旦可见,实际显示可能需要几秒钟的时间。

相关问题