日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Icon,Image,ImageIcon的简单的对比参考 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

其實(shí)就算是現(xiàn)在,我還是有不少地方概念模糊,但是下面的內(nèi)容是是沒有什么問題的。稍微介紹一下,或許有些地方我無法解釋:

大部分內(nèi)容都是查的Java SE 5.0 API

Icon:

Icon位于javax.swing包中,它是一個(gè)接口 public interface Icon,介紹為:一個(gè)小的固定大小的圖片,通常用于裝飾組件

有三個(gè)方法:

int getIconHeight();

int getIconWidth();

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

Icon木有用過,提到它是因?yàn)镮mageIcon實(shí)現(xiàn)了Icon接口(ImageIcon還實(shí)現(xiàn)了Accessible,Serializable接口,不過這里不具體說明了)

ImageIcon:

ImageIcon位于javax.swing包中。可以根據(jù)Image繪制Icon(這句話很關(guān)鍵),可以使用MediaTracker預(yù)載圖像(Image也可以)

構(gòu)造方法不少,舉幾個(gè)常用的:

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);?加載圖像,并在圖像已經(jīng)加載后才返回

要給控件加圖片的話,可以很輕松地

JLabel label = new JLabel(new ImageIcon("a.png"));搞定(這個(gè)是用來與后面的Image的加圖片對比的);

?

Image:來自于java.awt包中,抽象類Image是表示圖形圖像的所有類的超類,必須以特定于平臺的方式獲取圖像。

它的主要方法是:Image getScaledInstance(int width,int height,int hints)

hints為:指示用于圖像重新取樣的算法類型的標(biāo)志,具體可用的幾個(gè)參數(shù)如下:

SCALE_AREA_AVERAGING 使用 Area Averaging 圖像縮放算法。
SCALE_DEFAULT ?? ?使用默認(rèn)的圖像縮放算法。
SCALE_FAST ?? ?選擇一種圖像縮放算法,在這種縮放算法中,縮放速度比縮放平滑度具有更高的優(yōu)先級。
SCALE_REPLICATE?? ?使用 ReplicateScaleFilter 類中包含的圖像縮放算法。
SCALE_SMOOTH ?? ?選擇圖像平滑度比縮放速度具有更高優(yōu)先級的圖像縮放算法

我們生成Image對象時(shí)需要借助于Toolkit類的getImage方法,而生成Toolkit對象有兩種方法,一是借助于Component類的getToolkit()方法,一是借助于Toolkit的靜態(tài)方法getDefaultToolkit();

所以呢,如果要使用Image類來為組件添加圖標(biāo)的話有兩種方法

一種是:

//該類繼承了Component或其子類

Image image = getToolkit().getImage("a.png");

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

另一種:

Image image = new Toolkit.getDefaultToolkit().getImage("a.png");

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

那么,為什么不直接用ImageIcon呢?前者不是更簡單嗎?

是的,前者更簡單。但是Image可以對圖像進(jìn)行加工(比如調(diào)節(jié)大小使圖像變灰等等)。

舉一個(gè)例子,使用一個(gè)大圖片來設(shè)置為小按鈕的背景圖:

效果圖如下:

?

我想看了上面的內(nèi)容,關(guān)于Image和ImageIcon的區(qū)別您已經(jīng)有所體會了吧。

?

關(guān)于他們的互相的轉(zhuǎn)換,也希望大家能夠記住,使用起來會相當(dāng)順手:

Image的圖給ImageIcon

Image image?

ImageIcon imageIcon

1.new ImageIcon(image);

2.imageIcon.getImage(image);

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

ImageIcon的圖給Image

1.image = imageIcon.getImage();

?

作為新手的我,最近在看《設(shè)計(jì)模式》,我想恐怕要過很久了,那個(gè)時(shí)候我們從設(shè)計(jì)的角度來看這三個(gè)類

今天差不多就說到這里吧。演示Image和ImageIcon使用的例子已經(jīng)上傳。

總結(jié)

以上是生活随笔為你收集整理的关于Icon,Image,ImageIcon的简单的对比参考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。