Добрый день, пытаюсь сменить у 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
Если честно, первым делом хочется просто отправить в ближайший онлайн-переводчик. Машина вам напрямую выдала фразу "... static ...", из которой и так все ясно.
Ваш код внутри main выполняется вне какого-либо экземпляра класса - main является статичным методом. Поэтому this в этом контексте в принципе не существует, о чем вам и говорит машина.
Для решения проблемы достаточно обратиться к классу по имени, а не через this.getClass()
Main.class.getClassLoader().getResource("src/resources/imagesi/mylogo.png")
Отдельно замечу, что ресурс, скорее всего, у вас будет доступен как imagesi/mylogo.png
без префикса src/resources
.
Полный пример готового решения №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);
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Хочу хранить состояние некоторых объектов и что бы эти объекты были доступны всюду
Не могу разобраться, как в консоли вывести элементы массива: все чётные числа от 1 до 20Помогите, пожалуйста
Здравствуйте, взял триал такого продукта как "Stringer Java Obfuscator", но теперь битый час пытаюсь использовать его плагин stringer-gradle-pluginjar чтобы создавать...
Мне в приложении нужно динамически переводить текст с английского на русский, почитала, что есть Google Translate API, но он платный, есть какие-то...