Tips: Cómo poner un icono a una ventana JFrame

Este breve tutorial es para explicar como poner un icono propio en una ventana JFrame. Es aquel que vemos en la parte superior izquierda y tambien en la barra de tarea, generalmente en la parte inferior.
Por defecto nuestro IDE nos ejecuta el icono de aplicación java:

Antes de Comenzar vamos a necesitar tener nuestro icono de tamaño 16x16 en formato png:

Y ubicarlo, de ser posible para facilitar el código dentro del mismo paquete:

Cree un nuevo projecto: "Blog15" con un paquete y clase principal del mismo nombre.

Luego dentro del constructor de mi clase agrego estas 2 líneas de código:

  1. Image iconoPropio = Toolkit.getDefaultToolkit().getImage(getClass().getResource("carita.png"));
  2. setIconImage(iconoPropio);

Será necesario la importación de: "java.awt.*" para que "Image" y "toolkit" puedan funcionar correctamente.

Finalmente el código completo se verá asi:

  1. package blog15;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. public class Blog15 extends JFrame {
  7.  
  8.     public Blog15(){
  9.         super("Cambiar Icono Personalizado");
  10.         setSize(400,100);
  11.         setLocationRelativeTo(null);
  12.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  13.         Image iconoPropio = Toolkit.getDefaultToolkit().getImage(getClass().getResource("carita.png"));
  14.         setIconImage(iconoPropio);
  15.         setVisible(true);
  16.     }
  17.     public static void main(String[] args) {
  18.         new Blog15();
  19.     }
  20. }

Y el resultado final será:

Para hacerlo un poco mas divertido intentaremos hacer esto: la misma ventana JFrame pero con 2 botones que al ir presionandolos afectara al icono de la propia ventana.

  1. package blog15;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import javax.swing.*;
  7.  
  8. public class Blog15 extends JFrame implements ActionListener{
  9.  
  10.     JButton boton1 = new JButton("Personalizado");
  11.     JButton boton2 = new JButton("Estandar");
  12.     Image iconoPropio = Toolkit.getDefaultToolkit().getImage(getClass().getResource("carita.png"));
  13.  
  14.     public Blog15(){
  15.         super("Cambiar Icono Personalizado");
  16.         setSize(400,100);
  17.         setLocationRelativeTo(null);
  18.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19.         setLayout(new FlowLayout());
  20.         boton1.addActionListener(this);
  21.         boton2.addActionListener(this);
  22.         boton2.setEnabled(false);
  23.         add(boton1);
  24.         add(boton2);
  25.         setVisible(true);
  26.     }
  27.     public static void main(String[] args) {
  28.         new Blog15();
  29.     }
  30.  
  31.     @Override
  32.     public void actionPerformed(ActionEvent e) {
  33.         if(e.getSource() == boton1){
  34.             setIconImage(iconoPropio);
  35.             boton1.setEnabled(false);
  36.             boton2.setEnabled(true);
  37.  
  38.         }
  39.         if(e.getSource() == boton2){
  40.             setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClass().getName()));
  41.             boton1.setEnabled(true);
  42.             boton2.setEnabled(false);
  43.         }
  44.     }
  45. }

6 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Gracias amigo, amigazo, amiguito, idolo, máquina, crack, fiera, capitán de navio

    ResponderEliminar
  3. gracias ahora podre hacer mi juego que se llama Geometry Jump ahora tiene icono de ventana :D

    ResponderEliminar
  4. Oyeme pendejo de mierda cuantos años estudiaste para esto carajo estupido de mierdad jodete mierda

    ResponderEliminar
  5. Muchas gracias, bro. Me sirvió mucho.

    ResponderEliminar