Actualizacion:
Buenas, luego de seguir algunas recomendaciones de mi compañero de abajo y aplicando un poco en mi codigo, me surge el siguiente problema:
Codigo de mi clase BD:
public void InsertoImagen (ImagenPrincipalPR imagenPrincipalPR)
{
try {
con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/Sistem.DB","postgres","ender");
String SQLInsert = ("INSERT INTO categoria_pr (nombre_pr,descripcion_pr,image_pr,enum_pk)"
+ "VALUES (?,?,?,?)");
File archivo = imagenPrincipalPR.getFoto();
FileInputStream convertir = null;
if (imagenPrincipalPR.getFoto() != null)
{
String SQLInsertImage = ("INSERT INTO categoria_pr (image_pr)"
+ "VALUES (?)");
try {
convertir = new FileInputStream (archivo);
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
Sta = con.prepareStatement(SQLInsertImage);
Sta.setBinaryStream(3, convertir,(int)archivo.length());
}
else
{
Sta = con.prepareStatement(SQLInsert);
Sta.setString(1, imagenPrincipalPR.getNombre());
Sta.setString(2, imagenPrincipalPR.getDescripcion());
Sta.setInt(4, imagenPrincipalPR.getEnum());
}
} catch (SQLException ex) {
ex.printStackTrace();
}
finally
{
try {
con.close();
Sta.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
En esta parte, por medio de construccion defino un objeto de tipo ImagenPrincipal, el cual hare el insert a lo que le estableci.
Mediante un buttom (señalado en la imagen), declaro un JFileChooser que me permite seleccionar la imagen y pasarla al Label
Codigo del Buttom:
public void Imagen()
{
JFileChooser Cargar = new JFileChooser();
FileNameExtensionFilter formato = new FileNameExtensionFilter("Solo Imagenes: JPG,PNG O GIFT","jpg","gift","png");
Cargar.setFileFilter(formato);
int a = Cargar.showOpenDialog(this);
if (a==JFileChooser.APPROVE_OPTION)
{
imagenCateP = Cargar.getSelectedFile();
ImageIcon IconoImagen = new ImageIcon(imagenCateP.getAbsolutePath());
int ancho = FotoCate.getWidth();
int alto = FotoCate.getHeight();
Image RImage = IconoImagen.getImage();
RImage.getScaledInstance(ancho, alto, Image.SCALE_DEFAULT);
ImageIcon RedimensionImagen = new ImageIcon(RImage);
FotoCate.setIcon(RedimensionImagen);
}
}
En el Buttom "Aceptar" tengo el siguiente metodo cargado, el cual es el que me va servir para obtener los campos e ingresarlos a la DB.
public void Aceptar()
{
Nom = this.NomCate.getText();
Descrip = this.DescripMain.getText();
if (imagenCateP == null)
{
JOptionPane.showMessageDialog(this, "Debe Escojer una foto");
}
else{
ImagenPrincipalPR Creacion = new ImagenPrincipalPR(Nom, Descrip,imagenCateP,a);
Base.InsertoImagen(Creacion);
}
}
Al ejecutar el Codigo me da el siguiente error:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at VentanaDeCreacion.Aceptar(VentanaDeCreacion.java:73)
at VentanaDeCreacion.ButtonAceptActionPerformed(VentanaDeCreacion.java:208)
at VentanaDeCreacion.access$400(VentanaDeCreacion.java:18)
at VentanaDeCreacion$4.actionPerformed(VentanaDeCreacion.java:123)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
at java.awt.Dialog.show(Dialog.java:1082)
at java.awt.Component.show(Component.java:1655)
at java.awt.Component.setVisible(Component.java:1607)
at java.awt.Window.setVisible(Window.java:1014)
at java.awt.Dialog.setVisible(Dialog.java:1005)
at VentanaDeCreacion$6.run(VentanaDeCreacion.java:258)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
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)
Leyendo mucho en foros y viendo videos en youtube, sucede que el error aparece cuando se le esta estableciendo un NULL a un objeto, pero sinceramente mirando y mirando repetidas veces el codigo y cambiando los metodos principales no encuentro el error o a menos que lo este interpretando mal.
Si algun experto en el tema me pudiera ayudar con esto, y algunos consejos para mejorar (soy iniciado en esta lenguaje).
Gracias ^^