2/12/09

Imagen de fondo en JPanel con Netbeans

Como ya escribi en un post anterior como colocar una imagen de fondo en un JFame, ahora surge la interrogante de como colocar una imagen de fondo en un JPanel, googleando encontre ejemplos de como realizar esta accion pero bastante pesados y poco entendibles, asi que me quede jugando un poco con el codigo que tenia y al final resulto cosa mas sencilla. Aqui esta como


La clase que utilizamos es esta llamada mipanel la creamos para colocar la imagen dentro el JFrame y ahora nos servira para hacerlo dentro del JPanel, no hay que modificar nada, si quieres saber mas de esta clase, entra aqui.

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;

/**
 * http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class mipanel extends javax.swing.JPanel {

    public mipanel(){    
        this.setSize(400,280);
    }
        
    @Override
    public void paint(Graphics g){
        Dimension tamanio = getSize();
        ImageIcon imagenFondo = new ImageIcon(getClass().getResource("/imagenes/casalibertad.jpg"));        
        g.drawImage(imagenFondo.getImage(),0,0,tamanio.width, tamanio.height, null);        
        setOpaque(false);
        super.paintComponent(g);
    }    
}

Ahora una ves que tenemos nuestro proyecto abierto, en nuestro jFrame colocamos nuestro JPanel al cual le queremos añadir la imagen. Dejala con el nombre por defecto jPanel1

Ahora dirigete al codigo "Source" y añade el evento formWindowActivated al jFrame
Añade el siguiente codigo:

 private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
       mipanel p = new mipanel();
       jPanel1.add(p);           
       jPanel1.repaint();      
    }  

eso es todo. solo ejecuta el proyecto (F6) y listo.

El codigo no esta completo, como se ve en la imagen el jpanel toma la imagen que tenemos de mipanel.java, pero conserva su tamaño original, esto puede modificarse claro, pero ya me dio flojera sera en otra. Lo que si intereza es poder utilizar controles encima de la imagen, y como puede verse en la captura de abajo, lo permite.

10 comentarios:

  1. Eres un master mi chavo gracias me sacaste del apuro, tus explicaciones son muy buenas

    ResponderEliminar
  2. Eternamente agradecida!!
    Explicación fantástica, ya estaba loca buscando por todos sitios!

    ResponderEliminar
  3. Realmente te digo... es el mejor ejemplo que he visto sobre imagen en JPanel! Excelente!!! Mil gracias por el aporte!!!!

    ResponderEliminar
  4. fiiiiiiu...

    que rifado.

    oye y si quiero 2 o mas paneles con imagenes diferentes, se necesita una clase para cada uno? o hay forma de hacerlo todo en una misma ?

    Espero que respondas pronto

    ResponderEliminar
  5. Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.

    netbeans me dice esto sabes como compilar como el dice???

    por cierto he leído muchas copias de lo que tu haces y no dicen que eres tu te agradezco me has ayudado con muchas otras cosas

    ResponderEliminar
  6. hola :)

    ese aviso te dice que se esta utilizando algunos elementos deprecated, este post lo hice hace tiempo y ya en ese entonces estaba deprecated el metodo formWindowActivated.

    mi consejo ya no lo utilices.

    en cambio el codigo del jpanel si es valido. si te interesa busca en este mi blog el compònente jcmousepanel

    saludos

    ResponderEliminar
  7. GRACIASSSSSSS.... estaba busque y busque.... hasta que lo encontre y nada mejor que muy bien explicado, de nuevo gracias man.. :)

    ResponderEliminar
  8. Hermano... Gracias!! me salvaste la vida!!Saludos desde Colombia

    ResponderEliminar
  9. Hola a todos te publico una duda y ojalá me la puedas aclarar estoy usando java + hibernate para el acceso a la base de datos esto es nuevo para mi y me da el siguiente error
    "La llave (id_medida)=(0) no está presente en la tabla «vulnerabilidad»." y es debido a que esas tablas tienen una relación de 1 a 1 pudieras ayudarme este es mi correo jrherrera@estudiantes.uci.cu es que no todos los días me puedo conectar a internet saludos y gracias

    ResponderEliminar