关于Icon,Image,ImageIcon的简单的对比参考

Icon:

Icon位于javax.swing包中,它是一个接口 public interface Icon,介绍为:一个小的固定大小的图片,通常用于装饰组件

有三个方法:

int getIconHeight();

int getIconWidth();

void paintIcon(Component c,Graphics g,int x,int y);

Icon木有用过,提到它是因为ImageIcon实现了Icon接口(ImageIcon还实现了Accessible,Serializable接口,不过这里不具体说明了)


ImageIcon:

ImageIcon位于javax.swing包中。可以根据Image绘制Icon(这句话很关键),可以使用MediaTracker预载图像(Image也可以)

构造方法不少,举几个常用的:

ImageIcon(Image image);

ImageIcon(String name);

ImageIcon(URL url);


主要方法:

int getIconHeight();

int getIconWidth();

void paintIcon(Component c,Graphics g,int x,int y);

image getImage();

void setImage(Image image);

protect void loadImage(Image image); //加载图像,并在图像已经加载后才返回


要给控件加图片的话,可以很轻松地

JLabel label = new JLabel(new ImageIcon("a.png"));

搞定(这个是用来与后面的Image的加图片对比的);

 

Image:

来自于java.awt包中,抽象类Image是表示图形图像的所有类的超类,必须以特定于平台的方式获取图像。

它的主要方法是:

Image getScaledInstance(int width,int height,int hints)

hints为:指示用于图像重新取样的算法类型的标志,具体可用的几个参数如下:

SCALE_AREA_AVERAGING 使用 Area Averaging 图像缩放算法。
SCALE_DEFAULT     使用默认的图像缩放算法。
SCALE_FAST     选择一种图像缩放算法,在这种缩放算法中,缩放速度比缩放平滑度具有更高的优先级。
SCALE_REPLICATE    使用 ReplicateScaleFilter 类中包含的图像缩放算法。

SCALE_SMOOTH     选择图像平滑度比缩放速度具有更高优先级的图像缩放算法


我们生成Image对象时需要借助于Toolkit类的getImage方法,而生成Toolkit对象有两种方法,一是借助于Component类的getToolkit()方法,一是借助于Toolkit的静态方法getDefaultToolkit();


所以呢,如果要使用Image类来为组件添加图标的话有两种方法

一种是:

//该类继承了Component或其子类

Image image = getToolkit().getImage("a.png");//JFrame下的方法

注:"a.png"默认位置在哪里??"a.png"文件在工程根目录下,"/a.png"在计算机工作区所在磁盘根目录下,或者使用绝对路径,例如"F:\java\Demo\a.png"

JButton jb = new JButton(new ImageIcon(image));

另一种:

Image image = Toolkit.getDefaultToolkit().getImage("a.png");//Toolkit下的静态方法

注:"a.png"默认位置在哪里??"a.png"文件在工程根目录下,"/a.png"在计算机工作区所在磁盘根目录下,或者使用绝对路径,例如"F:\java\Demo\a.png"

JButton jb = new JButton(new ImageIcon(image));


那么,为什么不直接用ImageIcon呢?前者不是更简单吗?

是的,前者更简单。但是Image可以对图像进行加工(比如调节大小使图像变灰等等)。


关于他们的互相的转换,也希望大家能够记住,使用起来会相当顺手:

Image的图给ImageIcon

Image image 

ImageIcon imageIcon

1.new ImageIcon(image);

2.imageIcon.getImage(image);

3.很可惜的,loadImage方法为protected,我们使用不到了。


ImageIcon的图给Image

1.image = imageIcon.getImage();

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值