3 Ways to Set Icon Image for JFrame

How to set icon image for JFrame
Here are 3 ways to set an icon image in JFrame. Doing this is dead simple, and each way doesn't take more than one statement. An icon image appears on the title bar at the corner. By default, there will be a java cup. Using the setIconImage(Image) method, we can set a custom icon image. Here is how we can do this, (with helpful commentaries).


/*
These methods are inherited to JFrame from java.awt.Frame
public void setIconImage(java.awt.Image img);
public Image getIconImage();
*/

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
class SetIconImage extends JFrame
{  

    public SetIconImage()
    {
        createAndShowGUI();
    }
  
    private void createAndShowGUI()
    {
        setTitle("Icon image");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        // First way, using Toolkit
        // The Toolkit class contains a factory method getDefaulToolkit()
        // which returns Toolkit object. This object contains getImage()
        // method which takes the path of the image and returns the
        // java.awt.Image object
        setIconImage(Toolkit.getDefaultToolkit().getImage("Java_logo.png"));
       
        // Second way, using ImageIcon
        // The getImage() method returns Image instance
        // of the ImageIcon, which is exactly what we need
        // here
        setIconImage(new ImageIcon("Java_logo.png").getImage());
       
        // Third way, using ImageIO
        try
        {
        // The read(), static method of ImageIO class
        // takes InputStream object pointing to the image file
        setIconImage(ImageIO.read(new FileInputStream("Java_logo.png")));
        }catch(Exception e){}
       
        setSize(400,400);
        setVisible(true);
    }
  
    public static void main(String args[])
    {
        new SetIconImage();
    }
}

The greatest compliment you can give me is when you share this with others. I sincerely appreciate it :)

No comments: