Меню Рубрики

Установка иконок в java

Icon и ImageIcon – использование иконок в Java Swing

Некоторые компоненты Java Swing поддерживают иконки. Например, у кнопок, текстовых меток или у пунктов меню могут быть установлены иконки. На рисунке можно посмотреть внешний вид тестового приложения, у которого для кнопки и для текстовой метки установлены иконки. Это стандартные иконки Java Swing.

Для установки иконки используется метод setIcon, которому в качестве параметра передается ссылка на Icon. Можно воспользоваться классом ImageIcon для загрузки своих собственных изображений. ImageIcon реализует интерфейс Icon, поэтому кактолько ImageIcon создан, можно смело передавать его методу setIcon. ImageIcon может использоваться для GIF, JPEG и PNG изображений. При создании объекта ImageIcon в качестве параметра конструктору необходимо передать путь к рисунку. Путь к рисунку может быть абсолютный или относительный.

Вообще есть несколько вариантов того, где должны храниться файлы рисунков. Первый вариант -приложение на Java для удобства распространения можно собирать в jar архив. Все рисунки также помещать jar архив. У такого варианта есть неоспоримый плюс, приложение – это один файл. Всё, что нужно приложению для успешной работы будет в этом jar файле. С другой стороны иногда полезно, чтобы рисунки и ресурсные файлы были доступны без каких-то хитрых манипуляций. В случае с jar файлом ресурсы также доступны, но нужно производить разархивацию (jar – это zip архив) , затем менять нужные файлы и в конце концов собирать обратно. Второй вариант — можно не выполнять компоновку всего приложения в jar фал, а написать некий bat’ник, который будет запускать Main класс приложения. И наконец третий — рисунки вынести в отдельную директорию, например images, которая будет находиться там же, где jar архив приложения. Посмотрим разные случаи.

Обратимся к коду тестового примера. Здесь имеется класс TestFrame. В той же директории, в которой находится TestFrame, располагается несколько рисунков. Требуется подгрузить их и отобразить в качестве иконок. Делается это при помощи вот такой конструкции.

Читайте также:  Установки компьютера в перово

Еще раз отмечу, при использовании такого метода необходимо, чтобы рисунки находились в той же директории, где и сам класс. Ну или путь к рисунку path должен быть, к примеру, “images/icon1.png”, а в директории, в которой располагается TestFrame должна находитться папка images с рисунком icon1.png. Например вот так рисунки располагались у меня в проекте, чтобы работал приведеный выше код.

Второй вариант – располагать рисунки вот так.

Приложение представляет собой архив text.jar, а рисунки располагаются в директории images, которая находится в той же директории, что и архив. Тогда загружать рисунки для иконок можно вот так.

В тестовом приложении используются оба метода загрузки изображений. Для первых двух иконок изображения достаются из jar архива приложения, для третьей – изображение берется из директории images. Внешний вид тестового приложения представлен на рисунке ниже.

источник

Установка иконок в java

Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.8.2008

Добрый день!
Думал пустячный вопрос, а вот уже который час не могу изменить
иконку вместо чашки с кофем!!

MainContentObj -объект класса JFrame;
Рисунок icon.gif лежит в папке «src/images/»
(«src/images/icon.gif»)

Иконка размером (16 на 16); Пробовал и 32 на 32. Менял расширения: jpg, ico и gif;

При изменении делаю «Clean and Build» затем Run
Работаю в NetBeans 6.0, но запускал jar через Ant непосредственно из командной сроки;

Dimatochkaru
Дата 17.9.2008, 13:46 (ссылка) | (нет голосов) Загрузка .
Код
MainContentObj.setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getClassLoader().getResource(«images/icon.gif»)));

(Путь определяет правильный, изображение находит, отображать не хочет);

Код
try <
Image icon =ImageIO.read(MainContent.class.getResourceAsStream(«images/icon.gif»));
MainContentObj.setIconImage(icon);
>
catch (IOException ex)
<
ex.printStackTrace();
>
niasilil
Дата 18.9.2008, 07:09 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Код
java.net.URL imgURL = LoginGUI.class.getResource(«images/lock_go.png»);
if (imgURL != null) <
this.setIconImage(new ImageIcon(imgURL).getImage());
>
LSD
Дата 18.9.2008, 12:24 (ссылка) | (нет голосов) Загрузка .

Leprechaun Software Developer

Профиль
Группа: Модератор
Сообщений: 15666
Регистрация: 24.3.2004

maxlab
Дата 30.9.2008, 23:00 (ссылка) | (нет голосов) Загрузка .

Шустрый

Профиль
Группа: Участник
Сообщений: 148
Регистрация: 22.11.2006

Код
Image img = new ImageIcon(Application.class.getResource(«/b2009/images/MainICO.png»)).getImage();
this.setIconImage(img);

вот так работает. Обращай внимание на путь к иконкам. Я всегда указываю от корня проекта. Application — это класс главного окна, куда иконка лепится.

Griphon
Дата 13.12.2008, 02:27 (ссылка) | (нет голосов) Загрузка .

Шустрый

Профиль
Группа: Участник
Сообщений: 62
Регистрация: 31.10.2008
Где: Киев

LSD
Дата 17.12.2008, 18:32 (ссылка) | (нет голосов) Загрузка .

Leprechaun Software Developer

Профиль
Группа: Модератор
Сообщений: 15666
Регистрация: 24.3.2004

Бывалый

Профиль
Группа: Участник
Сообщений: 188
Регистрация: 6.3.2007

я попробовала поменять , строчка кода
Image mainIcon = new ImageIcon(MyGui.class.getResource(«O:\. Project Elements\GUI\mainIcon3»)).getImage();
выдала мне ошибку illegal escape character
Может быть проблема в том что папка проекта находиться на флешке ?

Qawra
Дата 28.12.2008, 01:07 (ссылка) | (нет голосов) Загрузка .

Опытный

Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Обратный слэш (\) экранируется еше одним обратным слешем, т.е. \ в строке выглядит как «\\».

В путях файлов рекомендую использовать обычные слэши, т.е. /

SoulKeeper
Дата 28.12.2008, 02:22 (ссылка) | (нет голосов) Загрузка .
agR
Дата 28.12.2008, 14:53 (ссылка) | (нет голосов) Загрузка .

Шустрый

Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Опытный

Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Все таки лучше пользоваться «\\», так как обычная косая черта «/» это в большей степени к винде относится, а в другой системе могут быть другие разделители. А если уж вообще с фанатизмом подойти к делу, то есть получить 100% гарантию правильного разделителя, то надо использовать File.separator.

SoulKeeper
Дата 28.12.2008, 15:00 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

math64
Дата 28.12.2008, 15:21 (ссылка) | (нет голосов) Загрузка .
agR
Дата 29.12.2008, 00:35 (ссылка) | (нет голосов) Загрузка .

Шустрый

Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.7.2006
Где: Киев

Цитата(SoulKeeper @ 28.12.2008, 15:00 )
Вообще-то в винде как раз таки бэк слеши (E:\programming\groovy — к примеру), но java чудесно работает со слешами.
Цитата
разделитель «/» работает точно так же, как и «\» во многих
программах и системных вызовах Windows. Дело в том, что в прародителе DOS —
операционной системе CP/M — не было директорий и, следовательно,
разделителей в именах файлов. Прямой слэш «/» был уже задействован для
передачи опций командам CP/M; обратный слэш «\» стали использовать как
разделитель директорий в именах файлов, однако оболочка понимает и «/» для
совместимости с другими операционными системами.

Шустрый

Профиль
Группа: Участник
Сообщений: 106
Регистрация: 26.3.2005
Где: Tashkent

public class Test extends JFrame<

protected static Image getImage() <
// link.class класс
java.net.URL imgURL = test.images.link.class.getResource(«icon.gif»);
if (imgURL != null) <
return new ImageIcon(imgURL).getImage();
> else <
return null;
>
>
.
>

bars_uz
Дата 30.12.2008, 08:39 (ссылка) | (нет голосов) Загрузка .
Правила форума «Java»
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс «транслит«, если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка «Пометить как решённый» находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »

[ Время генерации скрипта: 0.1589 ] [ Использовано запросов: 21 ] [ GZIP включён ]

источник