Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2013, 15:30
Avatar de paula23andrea
paula23andrea
 
Fecha de Ingreso: noviembre-2012
Mensajes: 38
Antigüedad: 12 años
Puntos: 1
Exclamación Poner imagen de fondo en MDI: NullPointerException

Buenas tardes, He estado tratando de ponerle una imagen de fondo a un MDI, tras realizar una búsqueda encontré e implementé el siguiente código, pero no entiendo por qué me arroja un NullPointerException, Así que agradezco a quien me pueda orientar con este código...


Este código es del javaclass que creé para traer la imagen :

Código Java:
Ver original
  1. package Formularios;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Insets;
  6. import java.awt.image.BufferedImage;
  7. import java.io.IOException;
  8. import java.net.URL;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11. import javax.imageio.ImageIO;
  12. import javax.swing.border.Border;
  13.  
  14. public class FondoMDI implements Border {    
  15.     BufferedImage fondo;
  16.     public FondoMDI(){    
  17.         try {      
  18.             //se obtiene la imagen            
  19.             URL url = new URL(getClass().getResource("H://Bases de datos II/LogoBD.png").toString());
  20.             fondo = ImageIO.read(url);    
  21.            
  22.         } catch (IOException ex) {
  23.             Logger.getLogger(FondoMDI.class.getName()).log(Level.SEVERE, null, ex);
  24.         }      
  25.     }
  26.     // se sobreescriben metodos propios de Border
  27.     @Override
  28.     public void paintBorder(Component c, Graphics g, int x, int y, int width, int height){    
  29.         //se dibuja la imagen de fondo en el centro del contenedor
  30.         //cada que se redimensione el contenedor, la imagen automaticamente se posiciona en el centro
  31.         g.drawImage(fondo, (x + (width - fondo.getWidth())/2),(y + (height - fondo.getHeight())/2), null);
  32.     }
  33.  
  34.     @Override
  35.     public Insets getBorderInsets(Component c){
  36.     return new Insets(0,0,0,0);
  37.     }
  38.  
  39.     @Override
  40.     public boolean isBorderOpaque(){
  41.     return true;
  42.     }
  43. }



...
Y este es el fragmento de código donde se llama la clase, el MDI funcionaba perfecto hasta añadir esta línea:

Código Java:
Ver original
  1. public class MDI_Principal extends javax.swing.JFrame {
  2.  
  3.      
  4.       public MDI_Principal() {
  5.         initComponents();
  6.         desktopPane.setBorder(new FondoMDI()); // De acá proviene el error
  7.     }



---
Y este es el conjunto de errores que me genera

Código Java:
Ver original
  1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  2.     at Formularios.FondoMDI.<init>(FondoMDI.java:22)
  3.     at Formularios.MDI_Principal.<init>(MDI_Principal.java:19)
  4.     at Formularios.MDI_Principal$11.run(MDI_Principal.java:281)
  5.     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
  6.     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
  7.     at java.awt.EventQueue.access$200(EventQueue.java:103)
  8.     at java.awt.EventQueue$3.run(EventQueue.java:688)
  9.     at java.awt.EventQueue$3.run(EventQueue.java:686)
  10.     at java.security.AccessController.doPrivileged(Native Method)
  11.     at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  12.     at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
  13.     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  14.     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  15.     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  16.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  17.     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  18.     at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Muchas gracias!