1

在什么情况下我想使用 ImageIcon 来表示图片文件而不是 Image 对象?我一直在搜索,我看到人们说在处理将成为 GUI 一部分的图像时你会使用 ImageIcon 对象,但我仍然不明白这意味着什么。换句话说,这两种对象类型之间的实际区别是什么?它们各自适合什么情况?

4

3 回答 3

2

AnImage是表示图片数据模型的对象。AnImageIcon是在屏幕上绘制 an 的 Swing 组件,Image您必须为它提供适当Image的绘制(通过传入现有的Image或通过提供足够的信息来查找和加载图像)。

关系类似于 aString和 a之间的关系JTextField;一个是数据的表示,另一个是在屏幕上绘制数据的图形组件。

于 2013-11-09T22:02:19.883 回答
2

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

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

ImageIcon是一个对象,它是一个Icon,但有一个Image。也就是说 - 它根据特定图像绘制图形。

当您说“我为什么要使用 ImageIcon 而不是 Image”时,您错过了重点:实际上您使用的Image是任何一种方式。

于 2013-11-09T22:08:36.083 回答
1

实现是不阻塞 Swing 线程。

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

基本上,您可以为按钮设置 ImageIcon,而无需实际强制预先加载它。

这可以通过有一个非常大的图标并将 Frame 的图标设置为此图像来看到。一旦设置为可见,实际出现可能需要几秒钟。

于 2013-11-09T22:04:15.587 回答