Código Java – Autoajustar Imágenes en un Contenedor

Este es el Ejemplo #22 del Topic: Programación Gráfica en Java.

Con el siguiente ejemplo aprenderemos a subir imágenes para mostrarlos en nuestros contenedores de java, y no solo eso, si no también como deben ser autoajustados al contenedor en el que se encuentra, de esa manera eliminamos los problemas de escalamiento que suele ocurrir por defecto si no se hace uso de una función que realice este trabajo.

Para este ejemplo contamos con 2 funciones básicas, la primera para presentar la imágen y la otra para autoajustarlo al componente que lo contiene:

...
    private void setImagen()
    {
        lbl.setIcon(ajustarImagen("/home/beastieux/MiImagen.png"));
        lbl.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
    }
...
...
    private ImageIcon ajustarImagen(String ico)
    {
        ImageIcon tmpIconAux = new ImageIcon(ico);
        //Escalar Imagen
        ImageIcon tmpIcon = new ImageIcon(tmpIconAux.getImage().getScaledInstance(200, 200, Image.SCALE_DEFAULT));
        return tmpIcon;
    }
...

Código de Ejemplo:

package beastieux.gui;

import java.awt.FlowLayout;
import java.awt.Image;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 *
 * @author beastieux
 */
public class Ejm22_SubirImagen extends JFrame {

    JLabel lbl;

    public Ejm22_SubirImagen()
    {
        lbl = new JLabel();

        this.add(lbl);
        this.setSize(200,200);
        this.setLayout(new FlowLayout());
        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    }

    private void setImagen()
    {
        lbl.setIcon(ajustarImagen("/home/beastieux/MiImagen.png"));
        lbl.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
    }

    private ImageIcon ajustarImagen(String ico)
    {
        ImageIcon tmpIconAux = new ImageIcon(ico);
        //Escalar Imagen
        ImageIcon tmpIcon = new ImageIcon(tmpIconAux.getImage().getScaledInstance(200, 200, Image.SCALE_DEFAULT));
        return tmpIcon;
    }

    public static void main(String args[])
    {
        Ejm22_SubirImagen obj=new Ejm22_SubirImagen();
        obj.setVisible(true);
        obj.setImagen();
    }

}

Pueder ir al artículo principal:

Códigos Sencillos hechos en Java

8 thoughts on “Código Java – Autoajustar Imágenes en un Contenedor

  1. Como puedo obtener la dirección de la imagen desde un ImageICon quiero obtener su url getClass().getResource(«/imagenes/imagen1Boton2.png») sí tengo una ImageICon

  2. Realmente… poderoso… BeAsTiEuX sos un genio!! anteriormente en foxpro hacia eso y en java crei que no se podia realizar. Gracias por tu publicación.

  3. Que bien, este ejemplo que has dejado esta buenísimo, pero como ya sabes no puedo ver un código fuente sin antes sacarle gallos; disculpa es mi mala costumbre me empilo cuando veo código java es mi lenguaje favorito, para este caso no seria mejor que el método setImagen() recibiera como parámetro un String para luego pasar este mismo argumento al otro método que has utilizado
    ajustarImagen(String ico).
    De esta forma se tendría un código genérico para cualquier imagen que se podría modificar incluso en la ejecución del programa.
    Gracias por compartir….

Deja un comentario