Icon і imageicon - використання іконок в java swing, java swing і інша джава

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

Взагалі є кілька варіантів того, де повинні зберігатися файли малюнків. Перший варіант-додаток на 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. Зовнішній вигляд тестового додатку представлений на малюнку нижче.

Icon і imageicon - використання іконок в java swing, java swing і інша джава

Код тестового додатка.

String path = "icon1.png»;
URL imgURL = TestFrame.class.getResource (path);
ImageIcon icon = new ImageIcon (imgURL);

- є кросплатформним. Справа в тому що, наприклад в Лінукс, при запуску програми не з консолі поточний каталог може виявитися не каталогом де лежить jar файл, а поточний каталог користувача - System.getProperty ( «user.home»), в якому може не виявитися графічних файлів і ніякого малюнка Ви на кнопці не побачите ...

Дякую за доповнення. З лінуксом особливо не дружу, тому не знав таких особливостей. Значить такий варіант завантаження малюнків буде найправильнішим.

Так, такий варіант повинен коректно працювати на ВСІХ платформах.
Але при запуску програми, з IDE Netbeans наприклад, іконок на кнопці теж не буде, так як програма на виконання не запускається через jar файл :), а після компіляції / зборки - будь ласка ...

Упс, помилочка, в IDE Netbeans теж коректно все працює, перевіряв :). Але раніше чомусь у мене таке було ...