Icon和ImageIcon之间的区别?

stu*_*ped 7 java icons swing awt imageicon

Icon bug = new ImageIcon( getClass().getResource( "bug1.png" ) );
ImageIcon bug = new ImageIcon( getClass().getResource( "bug1.png" ) );
Run Code Online (Sandbox Code Playgroud)

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

sas*_*kad 6

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

第一种方法更好,因为这意味着您可以稍后将ImageIcon更改为Icon的另一个实现,而无需更改应用程序的其余部分.


Lev*_*evi 1

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

引用自这里
希望这就是您正在寻找的;)