Добрый день, пытаюсь сменить у jar файла иконку. Для этого использую данную конструкцию
public class Main extends JFrame {
public static void main(String[] args){
Main.setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getClassLoader().getResource("src/resources/imagesi/mylogo.png")));
}
но почему то постоянно подчёркивает красным this. и пишет
Cannot use this in a static context
задан 12 ноя 2016 в 9:32
Varg SiegVarg Sieg
1,1502 золотых знака13 серебряных знаков35 бронзовых знаков
Если честно, первым делом хочется просто отправить в ближайший онлайн-переводчик. Машина вам напрямую выдала фразу «… static …», из которой и так все ясно.
Ваш код внутри main выполняется вне какого-либо экземпляра класса — main является статичным методом. Поэтому this в этом контексте в принципе не существует, о чем вам и говорит машина.
Для решения проблемы достаточно обратиться к классу по имени, а не через this.getClass()
Main.class.getClassLoader().getResource("src/resources/imagesi/mylogo.png")
Отдельно замечу, что ресурс, скорее всего, у вас будет доступен как imagesi/mylogo.png без префикса src/resources.
ответ дан 12 ноя 2016 в 9:39
7
Полный пример готового решения №1:
import java.awt.Toolkit;
import javax.swing.JFrame;
public class Main1 extends JFrame {
/**
*
*/
private static final long serialVersionUID = -4465997357046781244L;
public static void main(String[] args) {
final Main1 instance = new Main1();
/**
* Относительный адрес файла изображения. Относительно местоположения
* файла-класса.
*/
final String imgPath = "imagesi\mylogo.png";
instance.setIconImage(
Toolkit.getDefaultToolkit().getImage(Main1.class.getResource(imgPath)));
instance.setVisible(true);
}
}
Полный пример готового решения №2:
import java.awt.Toolkit;
import java.io.File;
import javax.swing.JFrame;
public class Main2 extends JFrame {
/**
*
*/
private static final long serialVersionUID = -7810262901547572556L;
public static void main(String[] args) {
final Main2 instance = new Main2();
instance.setIconImage(
Toolkit.getDefaultToolkit().getImage(new File("resources/imagesi/mylogo.png").toString()));
instance.setVisible(true);
}
}
ответ дан 12 ноя 2016 в 10:23
java1cprogjava1cprog
7814 серебряных знака9 бронзовых знаков
13
I’m using NetBeans, trying to change the familiar Java coffee cup icon to a png file that I have saved in a resources directory in the jar file. I’ve found many different web pages that claim they have a solution, but so far none of them work.
Here’s what I have at the moment (leaving out the try-catch block):
URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);
The class that contains this code is in the com.xyz package, if that makes any difference. That class also extends JFrame. This code is throwing a MalformedUrlException on the first line.
Anyone have a solution that works?
asked Oct 16, 2008 at 18:58
Bill the LizardBill the Lizard
394k208 gold badges559 silver badges874 bronze badges
1
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
May or may not require a ‘/’ at the front of the path.
answered Oct 16, 2008 at 19:01
6
You can simply go Netbeans, in the design view, go to JFrame property, choose icon image property, Choose Set Form’s iconImage property using: «Custom code» and then in the Form.SetIconImage() function put the following code:
Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))
Do not forget to import:
import java.awt.Toolkit;
in the source code!
tbodt
16.3k6 gold badges57 silver badges83 bronze badges
answered Jan 16, 2013 at 9:41
1
Or place the image in a location relative to a class and you don’t need all that package/path info in the string itself.
com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );
That way if you move the class to a different package, you dont have to find all the strings, you just move the class and its resources directory.
answered Oct 16, 2008 at 20:37
John GardnerJohn Gardner
23.8k5 gold badges59 silver badges76 bronze badges
1
Try This write after
initcomponents();
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
pb2q
57.6k18 gold badges145 silver badges146 bronze badges
answered Oct 19, 2013 at 18:46
/** Creates new form Java Program1*/
public Java Program1()
Image im = null;
try {
im = ImageIO.read(getClass().getResource("/image location"));
} catch (IOException ex) {
Logger.getLogger(chat.class.getName()).log(Level.SEVERE, null, ex);
}
setIconImage(im);
This is what I used in the GUI in netbeans and it worked perfectly
answered Oct 24, 2012 at 1:05
In a class that extends a javax.swing.JFrame use method setIconImage.
this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
answered Sep 21, 2013 at 0:58
user2601995user2601995
6,2658 gold badges36 silver badges41 bronze badges
0
You should define icons of various size, Windows and Linux distros like Ubuntu use different icons in Taskbar and Alt-Tab.
public static final URL ICON16 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug16.png");
public static final URL ICON32 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug32.png");
public static final URL ICON96 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug96.png");
List<Image> images = new ArrayList<>();
try {
images.add(ImageIO.read(HelperUi.ICON96));
images.add(ImageIO.read(HelperUi.ICON32));
images.add(ImageIO.read(HelperUi.ICON16));
} catch (IOException e) {
LOGGER.error(e, e);
}
// Define a small and large app icon
this.setIconImages(images);
answered Jul 24, 2016 at 0:48
ron190ron190
1,0121 gold badge17 silver badges29 bronze badges
You can try this one, it works just fine :
` ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
this.setIconImage(icon.getImage());`
answered Jan 26, 2019 at 1:23
inside frame constructor
try{
setIconImage(ImageIO.read(new File("./images/icon.png")));
}
catch (Exception ex){
//do something
}
answered Oct 21, 2017 at 18:32
Example:
URL imageURL = this.getClass().getClassLoader().getResource("Gui/icon/report-go-icon.png");
ImageIcon iChing = new ImageIcon("C:\Users\RrezartP\Documents\NetBeansProjects\Inventari\src\Gui\icon\report-go-icon.png");
btnReport.setIcon(iChing);
System.out.println(imageURL);
ron190
1,0121 gold badge17 silver badges29 bronze badges
answered Sep 26, 2014 at 9:01
I’m using NetBeans, trying to change the familiar Java coffee cup icon to a png file that I have saved in a resources directory in the jar file. I’ve found many different web pages that claim they have a solution, but so far none of them work.
Here’s what I have at the moment (leaving out the try-catch block):
URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);
The class that contains this code is in the com.xyz package, if that makes any difference. That class also extends JFrame. This code is throwing a MalformedUrlException on the first line.
Anyone have a solution that works?
asked Oct 16, 2008 at 18:58
Bill the LizardBill the Lizard
394k208 gold badges559 silver badges874 bronze badges
1
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
May or may not require a ‘/’ at the front of the path.
answered Oct 16, 2008 at 19:01
6
You can simply go Netbeans, in the design view, go to JFrame property, choose icon image property, Choose Set Form’s iconImage property using: «Custom code» and then in the Form.SetIconImage() function put the following code:
Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))
Do not forget to import:
import java.awt.Toolkit;
in the source code!
tbodt
16.3k6 gold badges57 silver badges83 bronze badges
answered Jan 16, 2013 at 9:41
1
Or place the image in a location relative to a class and you don’t need all that package/path info in the string itself.
com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );
That way if you move the class to a different package, you dont have to find all the strings, you just move the class and its resources directory.
answered Oct 16, 2008 at 20:37
John GardnerJohn Gardner
23.8k5 gold badges59 silver badges76 bronze badges
1
Try This write after
initcomponents();
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
pb2q
57.6k18 gold badges145 silver badges146 bronze badges
answered Oct 19, 2013 at 18:46
/** Creates new form Java Program1*/
public Java Program1()
Image im = null;
try {
im = ImageIO.read(getClass().getResource("/image location"));
} catch (IOException ex) {
Logger.getLogger(chat.class.getName()).log(Level.SEVERE, null, ex);
}
setIconImage(im);
This is what I used in the GUI in netbeans and it worked perfectly
answered Oct 24, 2012 at 1:05
In a class that extends a javax.swing.JFrame use method setIconImage.
this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
answered Sep 21, 2013 at 0:58
user2601995user2601995
6,2658 gold badges36 silver badges41 bronze badges
0
You should define icons of various size, Windows and Linux distros like Ubuntu use different icons in Taskbar and Alt-Tab.
public static final URL ICON16 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug16.png");
public static final URL ICON32 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug32.png");
public static final URL ICON96 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug96.png");
List<Image> images = new ArrayList<>();
try {
images.add(ImageIO.read(HelperUi.ICON96));
images.add(ImageIO.read(HelperUi.ICON32));
images.add(ImageIO.read(HelperUi.ICON16));
} catch (IOException e) {
LOGGER.error(e, e);
}
// Define a small and large app icon
this.setIconImages(images);
answered Jul 24, 2016 at 0:48
ron190ron190
1,0121 gold badge17 silver badges29 bronze badges
You can try this one, it works just fine :
` ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
this.setIconImage(icon.getImage());`
answered Jan 26, 2019 at 1:23
inside frame constructor
try{
setIconImage(ImageIO.read(new File("./images/icon.png")));
}
catch (Exception ex){
//do something
}
answered Oct 21, 2017 at 18:32
Example:
URL imageURL = this.getClass().getClassLoader().getResource("Gui/icon/report-go-icon.png");
ImageIcon iChing = new ImageIcon("C:\Users\RrezartP\Documents\NetBeansProjects\Inventari\src\Gui\icon\report-go-icon.png");
btnReport.setIcon(iChing);
System.out.println(imageURL);
ron190
1,0121 gold badge17 silver badges29 bronze badges
answered Sep 26, 2014 at 9:01
я смог изменить значок среды выполнения с помощью такой
getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage(getClass()
.getClassLoader().getResource("MyProject/resources/myIcon.png")));
но есть ли способ сказать NetBeans использовать myIcon.png для исполняемого файла jar (MyProject/dist / MyProject.значок банке)?
5 ответов
оболочка запуска-это решение, я использую launch4j, кросс-платформенную легкую оболочку
сайт launch4j
вы можете использовать JSmooth создать исполняемый файл Java, а также связать значок.
нет, нет, потому что значок определяется Java. Единственный способ сделать это (по крайней мере для Windows) — это использовать обертки типа launch4j и затем установите путь значка. Если у вас уже есть завернутый exe без или неправильный значок, вы можете использовать Прибегать Хакер а затем следуйте turtorials о том, как изменить значок. Иначе ты не сможешь измениться .значок jar
возможность на mac использовать эту строку:
com.apple.eawt.Application.getApplication().setDockIconImage( new ImageIcon(getClass().getResource( "resources/appIcon.png" )).getImage());
он установил значок для док-станции. Я не могу проверить это сейчас, я не работаю на Mac, но попробуйте и вам меня не дата.
Как известно, это невозможно изменить .значок банке если вы хотите сделать это, вы должны изменить все .файлы jar в вашей операционной системе. В любом случае, решение возможно. Вы можете создать ярлык для .банку и затем вы можете изменить его:
правая кнопка > > свойства > > изменить значок.
p.s. Файл значка должен быть a .ico, поэтому вы можете использовать много сайтов для конвертации .расширение ico, если у вашего изображения есть другой один.
Вариант 1:
Вы также можете использовать Launch4j, это самый простой способ создать исполняемый файл приложения.
Мне удалось изменить значок среды выполнения, используя этот пример так
getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage(getClass()
.getClassLoader().getResource("MyProject/resources/myIcon.png")));
но есть ли способ указать NetBeans использовать myIcon.png для значка исполняемого файла jar (MyProject / dist / MyProject.jar)?
5 ответы
Оболочка запуска — это решение, я использую launch4j, кроссплатформенную легкую оболочку
сайт launch4j
ответ дан 31 окт ’14, 05:10
Вы можете использовать JSmooth создать исполняемый файл java, а также связать с ним значок.
Создан 08 фев.
Нет, потому что значок определяется Java. Единственный способ сделать это (по крайней мере, для Windows) — использовать оболочку вроде запуск4j а затем установите путь к значку. Если вы уже обернули exe без значка или с неправильным значком, вы можете использовать Ресурсный хакер а затем следуйте инструкциям по изменению значка. В противном случае вы не сможете изменить значок .jar.
ответ дан 09 мая ’17, 15:05
На Mac есть возможность использовать эту строку:
com.apple.eawt.Application.getApplication().setDockIconImage( new ImageIcon(getClass().getResource( "resources/appIcon.png" )).getImage());
Он установил ваш значок для док-станции. Я не могу его сейчас протестировать, я не работаю на Mac, но попробуйте и обновите меня до даты.
ответ дан 22 мая ’14, 13:05
Как известно, изменить значок .jar невозможно, потому что если вы хотите это сделать, вам следует изменить все файлы .jar в вашей операционной системе. Во всяком случае, решение возможно. Вы можете создать ярлык для .jar, а затем изменить его:
Правая кнопка >> Свойства >> Изменить значок.
ps Файл значка должен быть в формате .ico, поэтому вы можете использовать многие сайты для преобразования в расширение .ico, если у вашего изображения есть другое изображение.
Альтернатива 1: вы также можете использовать Launch4j, это самый простой способ сгенерировать исполняемый файл приложения.
ответ дан 27 окт ’17, 17:10
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
java
netbeans
icons
or задайте свой вопрос.
5 ответов
Обертка запуска — это решение, я использую start4j, облегченную оболочку для кросс-платформы
сайт launch4j
Gary Benade
31 окт. 2014, в 06:19
Поделиться
Вы можете использовать JSmooth для создания исполняемого java файла, а также связать с ним значок.
krupal
09 март 2012, в 13:47
Поделиться
Нет, нет, потому что значок определяется Java. Единственный способ сделать это (по крайней мере для Windows) — использовать обертку, например launch4j, а затем установить путь значка. Если вы уже завернули exe с неправильным или неправильным значком, вы можете использовать Recource Hacker, а затем следовать за turtorials о том, как изменить значок. В противном случае вы не можете изменить значок .jar
Area001
09 май 2017, в 15:47
Поделиться
Как известно, невозможно изменить значок .jar, если вы хотите сделать это, вы должны изменить все .jar файлы в своей операционной системе. Во всяком случае, решение возможно. Вы можете создать ярлык для .jar, а затем вы можете его изменить:
Правая кнопка → Свойства → Изменить значок.
p.s. Файл значка должен быть .ico, поэтому вы можете использовать много сайтов для преобразования в расширение .ico, если у вашего изображения есть еще один.
Альтернатива 1:
Вы также можете использовать Launch4j, это самый простой способ сгенерировать исполняемый файл приложения.
Marcello Marino
08 авг. 2017, в 08:45
Поделиться
Возможность на mac — использовать эту строку:
com.apple.eawt.Application.getApplication().setDockIconImage( new ImageIcon(getClass().getResource( "resources/appIcon.png" )).getImage());
Он установил значок для док-станции. На данный момент я не могу проверить это, я не работаю на Mac, но попробуй и подниму мне дату.
SteamFire
22 май 2014, в 14:32
Поделиться
Ещё вопросы
- 1Как преобразовать кадр данных pandas из строкового категориального столбца в числовое представление
- 0mysql.exe выходной файл CSV в Windows
- 0Удалить зазор между изображением и контейнером [дубликаты]
- 1JSON десериализация для типов C #
- 0Ограниченный запуск onFulfilled callback для обещания, даже если обещание отклонено
- 1УРОВЕНЬ УРОВНЯ Дерева с Явой
- 0MySQL подсчет с ГДЕ и GROUP BY
- 1Форматирование XML для отображения в TextView?
- 0заставить jsf не декодировать код в html
- 0Показать и скрыть ошибки на стороне сервера в формах AngularJS 1.3+
- 1Как реализовать детальное уведомление Android?
- 0Javascript: Почему мой JavaScript не запускает обе анимации?
- 1LINQ: группировка по нескольким столбцам с максимумом для одного столбца
- 0Дублирующая запись ‘1’ для ключа ‘PRIMARY’ при обновлении таблицы
- 1Ninject Неявная ошибка привязки конструктора для универсальных коллекций
- 0C ++ Улучшить файл карты памяти
- 0HTML: как сделать так, чтобы одна форма появлялась поверх другой?
- 1Python, инициализировать атрибут класса в цикле
- 0JQuery AJAX пост текущая дата и время ASP.NET веб-API
- 0пока цикл не зацикливается на str_pad
- 1JSON как параметр формы
- 1Kendo TimePicker для не привязки к ViewModel при использовании TimeSpan MVC
- 0Как вернуть ответ JSON от REST API Laravel 4?
- 1@classmethod для перегрузки конструктора
- 1Как использовать правильный десятичный разделитель и разделитель тысяч при экспорте в Excel в C #?
- 0Относительный месяц PHP не дает ожидаемого результата
- 0Проектирование базы данных — система «много ко многим» или «один ко многим»?
- 1Доступ к синглтону WCF в IIS
- 0Использование дополнительной угловой директивы во внешнем html
- 1Синхронизировать реквизит в Vuejs
- 0Нижний колонтитул PHP / CSS Не останется внизу страницы, если на странице нет текста [дубликата]
- 1Слияние двух массивов по id — функция карты — Javascript
- 0C ++ запись файлового потока
- 0Интеграция Jqwidget
- 0Опция выбора jquery onchange не работает
- 0При использовании интерфейса OpenCV C ++ мне нужно освободить захват камеры, созданный с помощью VideoCapture (int device?)
- 1Limelight Video Player || Как воспроизвести видео HTML5 с ним
- 0Группировка пользователей по n группам размеров с помощью angularfire
- 1Проверьте соседнюю точку в 2d массиве с граничными условиями
- 0перемещение потока и указателя файла
- 1что-то похожее на приложение с несколькими рабочими столами
- 0Highcharts — как динамически отключить plotBorder без воссоздания графика
- 0Прокрутка в пределах одного div в Ionic
- 0Можно ли изменить состояние (обновить адресную строку) и перезагрузить только определенный вид с помощью ui-маршрутизатора Angular?
- 1NPE при попытке доступа к переменной из метода. Обработка / Java
- 0Ошибка сегментации C ++ (дамп памяти)
- 0Yii2 Поиск сфинкса больше, чем меньше, или меньше, чем меньше ИЛИ «МЕЖДУ»
- 1Для портретной ориентации на вкладках
- 0(function ($) {// Некоторый код}) (jQuery); [Дубликат]
- 0Используя AWS, проект AngularJS на порту 80, используется ли не порт 80 для серверной части WebAPI?
|
theadamo86 7 / 7 / 0 Регистрация: 14.09.2013 Сообщений: 168 |
||||
|
1 |
||||
Как сменить иконку приложения?06.01.2014, 05:16. Показов 9944. Ответов 6 Метки нет (Все метки)
Как поменять иконку исполняемого файла (.app)? Программирую под Mac OS в IDEA. Вот моя программа:
__________________
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
06.01.2014, 05:16 |
|
6 |
|
Java, C# — Expert 69 / 69 / 12 Регистрация: 09.08.2011 Сообщений: 284 |
|
|
06.01.2014, 15:17 |
2 |
|
this.setIconImage(ImageIO.read(«picture.png»));
0 |
|
theadamo86 7 / 7 / 0 Регистрация: 14.09.2013 Сообщений: 168 |
||||
|
06.01.2014, 20:51 [ТС] |
3 |
|||
|
this.setIconImage(ImageIO.read(«picture.png»)); Так не получилось — программа не компилировалась. Я немного подправил код
но все равно не получилось. Добавлено через 6 минут
0 |
|
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ 443 / 442 / 100 Регистрация: 14.10.2012 Сообщений: 1,146 Записей в блоге: 9 |
|
|
06.01.2014, 21:11 |
4 |
|
путь к иконке валидный?
0 |
|
7 / 7 / 0 Регистрация: 14.09.2013 Сообщений: 168 |
|
|
06.01.2014, 21:14 [ТС] |
5 |
|
путь к иконке валидный? Да. Немного еще поясню: мне нужно поменять значок исполняемого файла .jar, чтобы он был в доке.
0 |
|
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ 443 / 442 / 100 Регистрация: 14.10.2012 Сообщений: 1,146 Записей в блоге: 9 |
|
|
06.01.2014, 21:39 |
6 |
|
эта штука умеет http://jsmooth.sourceforge.net/ ,
1 |
|
2000 / 1423 / 92 Регистрация: 25.11.2010 Сообщений: 3,611 |
|
|
09.01.2014, 16:07 |
7 |
|
Вообще-то иконка именно файла регулируется типом файла в ОС. Не могу утверждать этого со стопроцентной уверенностью относительно MacOS, но у меня есть подозрение, что ОС не умеет залазить в jar, читать манифест и устанавливать для файла специальную иконку. А приведенный выше способ устанавливает иконку окна (она же будет видна в панели приложений при запуске).
2 |




