Как изменить значок приложения по умолчанию в Java? - PullRequest
60 голосов
/ 16 октября 2008

Я использую NetBeans, пытаюсь изменить знакомый значок кофейной чашки Java на файл png, который я сохранил в каталоге ресурсов в файле jar. Я нашел много разных веб-страниц, которые утверждают, что у них есть решение, но пока ни одна из них не работает.

Вот то, что у меня есть в данный момент (без блока try-catch):

URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);

Класс, содержащий этот код, находится в пакете com.xyz , если это имеет какое-либо значение. Этот класс также расширяет JFrame. Этот код вызывает исключение MalformedUrlException в первой строке.

У кого-нибудь есть решение, которое работает?

Ответы [ 10 ]

70 голосов
/ 16 октября 2008
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");

Может или не может требовать '/' в начале пути.

13 голосов
/ 16 января 2013

Вы можете просто перейти на NetBeans, в представлении конструктора перейти к свойству JFrame, выбрать свойство значка значка, выбрать свойство iconImage Задать форму, используя: "Пользовательский код", а затем в функции Form.SetIconImage() добавить следующее код:

Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))

Не забудьте импортировать:

import java.awt.Toolkit;

в исходном коде!

4 голосов
/ 19 октября 2013

Попробуйте эту запись после

initcomponents();

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
4 голосов
/ 17 октября 2008

Или поместите изображение в местоположение относительно класса, и вам не нужна вся эта информация о пакете / пути в самой строке.

com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );

Таким образом, если вы перемещаете класс в другой пакет, вам не нужно находить все строки, вы просто перемещаете класс и его каталог ресурсов.

3 голосов
/ 24 октября 2012
    /** 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);

Это то, что я использовал в графическом интерфейсе в NetBeans, и оно отлично работало

1 голос
/ 24 июля 2016

Вы должны определить значки различного размера, дистрибутивы Windows и Linux, такие как Ubuntu, использовать разные значки на панели задач и 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);
1 голос
/ 21 сентября 2013

В классе, который расширяет javax.swing.JFrame, используйте метод setIconImage.

this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
0 голосов
/ 26 января 2019

Вы можете попробовать этот , он прекрасно работает:

`   ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
    this.setIconImage(icon.getImage());`
0 голосов
/ 21 октября 2017

конструктор внутренней рамки

try{    
       setIconImage(ImageIO.read(new File("./images/icon.png")));   
   }
catch (Exception ex){
       //do something
   }
0 голосов
/ 26 сентября 2014

Пример:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...