Icon和ImageIcon之间的区别?

时间:2013-12-30 01:01:39

标签: java swing icons awt imageicon

Icon bug = new ImageIcon( getClass().getResource( "bug1.png" ) );
ImageIcon bug = new ImageIcon( getClass().getResource( "bug1.png" ) );

这两者有什么区别?我的书总是使用第一行中的方式来声明ImageIcon,但不是更好地将其声明为第二种方式,因为更具体地说它是ImageIcon

5 个答案:

答案 0 :(得分:6)

Icon是一个接口,而ImageIcon是该接口的实现。

第一个更好,因为这意味着您可以在以后更改ImageIcon以用于Icon的其他实现,而无需更改应用程序的其余部分。

答案 1 :(得分:1)

它们的性质和应用是不同的。 Image是表示图形图像的所有类的抽象超类。 ImageIcon是Icon接口的一个实现,它使用Image作为其源。
可以将Image视为可呈现的内容,将ImageIcon视为在调用paintIcon()方法时将其呈现为Icon的内容。

引自here
希望这是你正在寻找的;)

答案 2 :(得分:1)

您应首先阅读ImageIcon的{​​{1}}。

您会注意到ImageIcon实施Icon,这意味着它可以在预期Icon的任何地方使用(例如JButtonJLabel示例)但它还提供了一种方法,您可以通过它获取Image的实例,允许您使用Graphics绘制它,而无需Component引用,Icon需要

答案 3 :(得分:0)

java-imageicon-vs-image-difference

这是一个关于图像和imageicon之间差异的线索,但在评论中他们也谈到了Icon等。也许这有帮助。

答案 4 :(得分:0)

两者都相似,但第一个是最好的,因为ImageIcon是Icon而不是相反。当我说ImageIcon是Icon时ImageIcon实现了Icon。