Cargar íconos en Java con ImageIconLoader

ImageIconLoader es una clase que permite cargar un ImageIcon fácilmente, mediante una operación estática. El ícono cargado sirve para mostrarse en cualquier componente que soporte íconos de Swing, por ejemplo.

Lo único que hay que hacer es llamar a ImageIconLoader.getImageIcon() pasando una ruta como parámetro. En caso que la imagen no exista, se muestra una cruz. Esto evita que por un mísero ícono tengamos que soportar algún NullPointerException.

package org.weblatam.swing;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.ImageIcon;

public class ImageIconLoader {

    public ImageIconLoader() {
    }

    static public ImageIcon getImageIcon(String path)
    {
        java.net.URL imageURL = ImageIconLoader.class.getResource(path);
        if (imageURL != null){
            ImageIcon icon = new ImageIcon(imageURL);
            return icon;
        }
        return new ImageIconLoader.MissingIcon();
    }

    static class MissingIcon extends ImageIcon {
        private int width = 16;
        private int height = 16;
        private BasicStroke stroke = new BasicStroke(4);

        public void paintIcon(Component c, Graphics g, int x, int y) {
            Graphics2D g2d = (Graphics2D) g.create();

            g2d.setColor(Color.WHITE);
            g2d.fillRect(x + 1, y + 1, width - 2, height - 2);

            g2d.setColor(Color.BLACK);
            g2d.drawRect(x + 1, y + 1, width - 2, height - 2);

            g2d.setColor(Color.RED);

            g2d.setStroke(stroke);
            g2d.drawLine(x + 10, y + 10, x + width - 10, y + height - 10);
            g2d.drawLine(x + 10, y + height - 10, x + width - 10, y + 10);

            g2d.dispose();
        }

        public int getIconWidth() {
            return width;
        }

        public int getIconHeight() {
            return height;
        }
    }
}

La forma de uso es muy sencilla, un ejemplo se incluye a continuación:

menuItemStatisticsTable.setIcon(ImageIconLoader.getImageIcon("/resources/images/statistics.png"));

 

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (No Ratings Yet)
Loading ... Cargando ...

Dejar una respuesta