Foro sobre Java SE > Imagen para JPanel
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
Gracias, ahi les doy una mirada a los links.
Siempre guardo las imagenes que usare en el proyecto, dentro de un paquete llamado Imagenes.
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.