How to change java icon in a JFrame

34,418

Solution 1

For example in a NetBeans project, create a resources folder in the src folder.

Put your images (jpg, ...) in there.

Whether you use ImageIO or Toolkit (including getResource), you must include a leading / in your path to the image file:

Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/agfa_icon.jpg"));
setIconImage(image);

If this code is inside your JFrame class, the image is added to the frame as an icon in your title bar.

Solution 2

This works pretty fine for me. Just add this after you've created your JFrame.

try {
   Image image = new ImageIcon("/icons/image.jpg").getImage();
   frame.setIconImage(image);
}catch(Exception e){
   System.out.println("Application icon not found");
}

Solution 3

  1. Paste your image icon (fav.png) in the same package first,
  2. Write following code in constructor of JFrame:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("fav.png")));

Note:- fav.png is the name of icon

Share:
34,418

Related videos on Youtube

Garrett Shaw
Author by

Garrett Shaw

Updated on August 29, 2020

Comments

  • Garrett Shaw
    Garrett Shaw over 3 years

    Ok so I've been researching this one quiet a bit. I am fairly new to java but thought that this one would be easy. Ive tried just about every way that has been answered on this site and still no luck, and usually when I look here I am able to find a answer that fits what I am looking for. Does anyone know how to change the Java icon in the top corner of the JFrame. I'm pretty positive that its not my file path either because all my images are in the same folder and they all work, this is the only one that I can't seem to get to work.

    This is the first part my code for the main menu of my program, everything works except when i try to add the icon image. The code I've entered below does not have anything in it for the JFrame IconImage, I removed it since it didn't work. So if there is someone who knows how to get it working with this code that would be highly appreciated, thank you very much in advanced!

    public class MainFrame
    {
    private MyPanel main;
    private MyPanel2 create;
    private MyPanel3 update;
    private MyPanel4 find;
    JFrame frame = new JFrame("Main Menu:");
    
    public void displayGUI()
    {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel contentPane = new JPanel();
        contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
        contentPane.setLayout(new CardLayout());
        main = new MyPanel(contentPane, this);
        create = new MyPanel2(contentPane);
        update = new MyPanel3(contentPane);
        find = new MyPanel4(contentPane);
        contentPane.add(main, "Main Menu");
        contentPane.add(create, "Create Part");
        contentPane.add(update, "Update Part");
        contentPane.add(find, "Find Part");
        frame.setLocation(200, 200);
        frame.setSize(700, 580);
        frame.setContentPane(contentPane);
    
        frame.setVisible(true);
    
    }
    
  • Victor Polevoy
    Victor Polevoy almost 9 years
    Please, avoid code-only answers. You should always provide some explanation of the reason of the problem in the question, possible solutions and example code (this). Spend some time to help people.