Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Imagen para JPanel

Hola, he probado varios codigos para insertar una imagen de fondo a un JPanel, este es uno de los codigos:
public class FondoVentana extends javax.swing.JFrame {

public Image imagenfondo;

public FondoVentana() {
initComponents();
this.setBounds(0, 0, 400, 400);
this.setTitle("Ventana con Fondo");
this.setVisible(true);
this.setLocationRelativeTo(null);

URL fondo=this.getClass().getResource("D:\\TecnicaturaProgramacion\\PracticaSupervisada\\ProyectoOdonto\\src\\Imagen\\Koala.jpg");
imagenfondo=new ImageIcon(fondo).getImage();

Container contenedor= getContentPane();
contenedor.add(panel);
}

public JPanel panel= new JPanel()
{
@Override
public void paintComponent(Graphics g)
{
g.drawImage(imagenfondo, 0, 0,getWidth(),getHeight(), this);
}

};

Pero todos me dan este error y nose como solucionarlo:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.(ImageIcon.java:205)
at Vistas.FondoVentana.(FondoVentana.java:32)
at Vistas.FondoVentana$2.run(FondoVentana.java:152)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Busque y me dicen que es porque estoy pasando un valor nulo, pero en donde?
Copie la ruta completa, porque pense que podria ser ese el problema, pero nose como arreglarlo.
Si puedes ayudarme, please.

junio 20, 2014 | Unregistered Commenterlatinjava

getResource se usa para obtener recursos incluidos en los .jar de la aplicación. Por ejemplo imágenes dentro de un package. No se pueden usar rutas absolutas del sistema de archivos.

http://docs.oracle.com/javase/tutorial/deployment/webstart/retrievingResources.html

http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String)

Si la imagen está en una localización del sistema de archivos, puedes usar:

http://docs.oracle.com/javase/7/docs/api/javax/imageio/package-summary.html

http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html

http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/2d/images/examples/LoadImageApp.java

Échale además un vistazo a este hilo: http://www.javahispano.org/java-se/post/2365097

junio 20, 2014 | Registered Commenterchoces

Gracias, ahi les doy una mirada a los links.
Siempre guardo las imagenes que usare en el proyecto, dentro de un paquete llamado Imagenes.

junio 20, 2014 | Unregistered Commenterlatinjava