Разница между Icon и ImageIcon?

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

в чем разница между этими двумя? Моя книга всегда использует путь в первой строке, чтобы объявить ImageIcon но не лучше ли объявить его вторым способом, потому что более конкретно это ImageIcon?

5 ответов


их природа и применение разных. Image-абстрактный суперкласс всех классов, представляющих графические изображения. ImageIcon-это реализация интерфейса значков, который использует изображение в качестве источника.
Подумайте об изображении как о чем-то, что может быть визуализировано, и ImageIcon как о чем-то, что будет визуализировано как значок при вызове метода paintIcon ().

цитата из здесь
Надеюсь, что это то, что вы ищу ;)


Icon является интерфейсом, тогда как ImageIcon реализация этого интерфейса.

первый лучше, потому что это означает, что вы можете изменить свой ImageIcon для другой реализации икона без изменения остальной части вашего приложения.


вы должны начать с чтения через JavaDocs на ImageIcon.

Вы заметите, что ImageIcon осуществляет Icon, что означает, что его можно использовать там, где когда-либо Icon ожидается (например,JButton и JLabel например), но он также предоставляет средства, с помощью которых вы можете получить экземпляр Image, который позволяет рисовать его с помощью Graphics без Component ссылка,Icon должен


посмотреть java-imageicon-vs-image-разница

Это нить о разнице между изображением и imageicon, но в комментариях они также говорят об иконе и тому подобное. Может, это поможет.


оба похожи, но первый из них лучший, потому что ImageIcon является значком, но не наоборот.Когда я говорю ImageIcon значок ImageIcon значок реализует.