elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda agregando objetos a un ArrayList
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda agregando objetos a un ArrayList  (Leído 2,649 veces)
Casvill

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Ayuda agregando objetos a un ArrayList
« en: 4 Enero 2019, 18:08 pm »

Hola!

Un amigo va a abrir un local de pizzas y yo para ir poniendo en práctica lo que he aprendido en la u, quise tratar de hacer un software que le sirviera (aún no sé bases de datos pero cuando tenga listo el código en java, empezaré a aprender bases de datos para implementarlo).

(En Colombia las universidades públicas están en paro desde hace meses, así que sólo alcancé a ver unas cuantas pocas clases, todo lo demás lo he leído por cuenta própia, disculpen las malas prácticas que de seguro habrán u.u)

El caso es que tengo una clase que es la interfaz, otra clase Control, Categoría y Producto (y otras dos que aún no uso).

Cotrol tiene una lista de Categorías, por otra parte Categoría tiene una lista de Productos.

Control ----> Categorías -----> Productos

Estoy tratando de añadir un Producto a una categoría pero por alguna razón me sale un error, y no sé cuál sea el error, ya lo traté de hacer por aparte en otros proyectos y me funciona, no sé que estaré haciendo mal aquí -.-"

Si alguien pudiera ayudarme se lo agradecería mucho, me tiene con dolor de cabeza pero no quiero abandonar esto, pues es el primer proyecto fuera de la u que me propongo a hacer.

PD: El código compila, el error sale cuando añado un producto a una categoría (NO LA AÑADE !! :S)

Aquí les dejo el código:

https://github.com/Casvill/Software-Local

GUI: (la mayor parte de este código está hecho por netBeans, yo hice los actionPerformed)
El botón que se encarga de añadir el producto (habiendo creado previamente una categoría) es  jbCrearPAñadir.

Estos son los errores que aparecen cuando le doy al boton de añadir productos:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
   at control.Categoria.añadirP(Categoria.java:26)
   at control.Control.añadirPro(Control.java:30)
   at gui.Inventario_Productos.jbCrearPAñadirActionPerformed(Inventario_Productos.java:401)
   at gui.Inventario_Productos.access$100(Inventario_Productos.java:6)
   at gui.Inventario_Productos$3.actionPerformed(Inventario_Productos.java:127)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
   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:6539)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
   at java.awt.Component.processEvent(Component.java:6304)
   at java.awt.Container.processEvent(Container.java:2239)
   at java.awt.Component.dispatchEventImpl(Component.java:4889)
   at java.awt.Container.dispatchEventImpl(Container.java:2297)
   at java.awt.Component.dispatchEvent(Component.java:4711)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
   at java.awt.Container.dispatchEventImpl(Container.java:2283)
   at java.awt.Window.dispatchEventImpl(Window.java:2746)
   at java.awt.Component.dispatchEvent(Component.java:4711)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
   at java.awt.EventQueue$4.run(EventQueue.java:733)
   at java.awt.EventQueue$4.run(EventQueue.java:731)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


Gracias de antemano!  ;D


« Última modificación: 5 Enero 2019, 16:50 pm por Casvill » En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Ayuda agregando objetos a un ArrayList
« Respuesta #1 en: 5 Enero 2019, 12:56 pm »

Que tal dog,

Estoy tratando de añadir un Producto a una categoría pero por alguna razón me sale un error, y no sé cuál sea el error, ya lo traté de hacer por aparte en otros proyectos y me funciona, no sé que estaré haciendo mal aquí -.-"

Si alguien pudiera ayudarme se lo agradecería mucho, me tiene con dolor de cabeza pero no quiero abandonar esto, pues es el primer proyecto fuera de la u que me propongo a hacer.

wtf dog, o el compilador te arroja excepción o no te arroja? una de dos, ese log con la traza del error puedes publicarlo aquí también, fíjate también

Que hacer eso ayuda, a que te ayuden mas rápidamente, porque tu clase es algo larga y muchos no cuentan con el tiempo necesario para reproducir tu error  :xD
 


« Última modificación: 5 Enero 2019, 12:59 pm por rub'n » En línea

rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
Casvill

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda agregando objetos a un ArrayList
« Respuesta #2 en: 5 Enero 2019, 16:53 pm »

wtf dog, o el compilador te arroja excepción o no te arroja? una de dos, ese log con la traza del error puedes publicarlo aquí también, fíjate también

Que hacer eso ayuda, a que te ayuden mas rápidamente, porque tu clase es algo larga y muchos no cuentan con el tiempo necesario para reproducir tu error  :xD

Gracias por responder, dog!  :xD

Edité el post, subí el código a github y pusé aquí lo que aparece en el log.

Feliz día!  :P
En línea

seupcdm

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda agregando objetos a un ArrayList
« Respuesta #3 en: 5 Enero 2019, 19:07 pm »

Estoy leyéndolo directamente desde github, pero en la clase Categoría tienes dos constructores que hacen cosas distintas.

Código
  1.    public Categoria()
  2.    {
  3.        codigo = "";
  4.        nombre = "Otros";
  5.        productos = new ArrayList();
  6.    }
  7.  
  8.    public Categoria(String codigo, String nombre)
  9.    {
  10.        this.codigo = codigo;
  11.        this.nombre = nombre;
  12.    }

No me preocupan los valores de las variables porque no sé para qué lo utilizas después, pero lo que sí me llama la atención es que solo instancies tu ArrayList en uno de los constructores, y más aún que la única instancia que hagas de las categorías sea a través del constructor que NO instancia el ArrayList:

Código
  1. private void jbCrearCatAñadirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbCrearCatAñadirActionPerformed
  2.  
  3.        Categoria categoria = new Categoria("", jtfCrearCatNombre.getText());
  4.        control.añadirC(categoria);
  5.        jcbCrearPCategoria.addItem(jtfCrearCatNombre.getText());
  6.        jcbEditarCategoria.addItem(jtfCrearCatNombre.getText());
  7.  
  8.        jtfCrearCatNombre.setText("");
  9.  
  10.        /*BorrarEsto:----------------------------------*/
  11.        for (int i = 0; i < control.getCategorias().size(); i++)
  12.        {
  13.            System.out.println(control.getCategorias().get(i).getNombre());
  14.        }
  15.        /*FinBorrar.-----------------------------------*/
  16.  
  17.  
  18.        //actulizarTablaProductos();
  19.    }//GEN-LAST:event_jbCrearCatAñadirActionPerformed

Vamos, igual me estoy inventando las cosas, pero según lo que veo y sin haber ejecutado tu programa, tienes dos opciones: usar el otro constructor o añadir la instancia del ArrayList al constructor que sí usas.

Código
  1.    public Categoria()
  2.    {
  3.        codigo = "";
  4.        nombre = "Otros";
  5.        productos = new ArrayList();
  6.    }
  7.  
  8.    public Categoria(String codigo, String nombre)
  9.    {
  10.        this.codigo = codigo;
  11.        this.nombre = nombre;
  12.        productos = new ArrayList();
  13.    }

También te diría que deberías especificar el tipo de variable que tu ArrayList contiene a través del operador <>. Si usas Java 7 o posterior, puedes hacer una instancia genérica tal que así new ArrayList<>();, si no, especifica el tipo new ArrayList<Producto>();

Y bueno, no voy a decir mucho más, pero aquí se debate qué es mejor, si utilizar la clase List o Arraylist, por si te interesa:
https://stackoverflow.com/questions/2279030/type-list-vs-type-arraylist-in-java

También te recomendaría leer bien las trazas de los errores.

Código:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
   at control.Categoria.añadirP(Categoria.java:26)
   at control.Control.añadirPro(Control.java:30)
   at gui.Inventario_Productos.jbCrearPAñadirActionPerformed(Inventario_Productos.java:401)

Es un puntero a null, lo que por lo general quiere decir que estás intentando acceder a las propiedades de un objeto que aunque esté declarado, no está instanciado. Tienes que ir de abajo arriba, y el último punto donde te casca es en la línea 26 de la clase Categoría. Justo donde intentas añadir a tu ArrayList el objeto producto, que por lo que veo sí está instanciado, lo cual me hace corroborar lo que te he comentado antes.

Código
  1. public void añadirP(Producto producto)
  2.    {
  3.        productos.add(producto);
  4.    }

Un saludo.
« Última modificación: 5 Enero 2019, 19:09 pm por seupcdm » En línea

Casvill

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda agregando objetos a un ArrayList
« Respuesta #4 en: 6 Enero 2019, 02:09 am »

Hola!
Hey muchas gracias por responder, hayaste mi error y aparte ahora aprendí a estar más pendiente de los constructores, siempre se aprende algo nuevo, muchas gracias de nuevo!


También te diría que deberías especificar el tipo de variable que tu ArrayList contiene a través del operador <>. Si usas Java 7 o posterior, puedes hacer una instancia genérica tal que así new ArrayList<>();, si no, especifica el tipo new ArrayList<Producto>();

Esto no lo sabía, pensaba que sólo debía especificarse cuando se declara (aunque hasta ahora no me ha dado problema por hacerlo así), si es por buenas prácticas, pues lo voy a implementar!




Y bueno, no voy a decir mucho más, pero aquí se debate qué es mejor, si utilizar la clase List o Arraylist, por si te interesa:
https://stackoverflow.com/questions/2279030/type-list-vs-type-arraylist-in-java
Gracias! siempre he usado ArrayList, pero al parecer recomiendan usar más List, no lo he leído completamente aún, pero me interesa mucho, ya lo dejé pendiente para leer!



También te recomendaría leer bien las trazas de los errores.

Código:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
   at control.Categoria.añadirP(Categoria.java:26)
   at control.Control.añadirPro(Control.java:30)
   at gui.Inventario_Productos.jbCrearPAñadirActionPerformed(Inventario_Productos.java:401)

Es un puntero a null, lo que por lo general quiere decir que estás intentando acceder a las propiedades de un objeto que aunque esté declarado, no está instanciado. Tienes que ir de abajo arriba, y el último punto donde te casca es en la línea 26 de la clase Categoría. Justo donde intentas añadir a tu ArrayList el objeto producto, que por lo que veo sí está instanciado, lo cual me hace corroborar lo que te he comentado antes.

Código
  1. public void añadirP(Producto producto)
  2.    {
  3.        productos.add(producto);
  4.    }

Un saludo.

 ;-) ;-) ;-) ;-) ;-) ;-)
Como dije, siempre se aprende algo nuevo, esto tampoco lo sabía, muchas gracias!
Saludos, te debo una!  :P :P :P
En línea

seupcdm

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda agregando objetos a un ArrayList
« Respuesta #5 en: 6 Enero 2019, 18:41 pm »

¡No se debe nada! Suerte con tu proyecto y un saludo.  ;-)
En línea

antopixel

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: Ayuda agregando objetos a un ArrayList
« Respuesta #6 en: 7 Enero 2019, 21:31 pm »

Si necesitas alguna otra ayuda, me puedes mandar mensaje privado.
Pdd: Tambien soy de Colombia y estoy en paro.  :-[
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
arraylist character to arraylist String
Java
mapers 4 5,564 Último mensaje 1 Noviembre 2011, 15:24 pm
por adastra
Meter ArrayList en Otro ArrayList
Java
Tuplado 1 3,314 Último mensaje 5 Enero 2014, 22:10 pm
por ~ Yoya ~
ArrayList varios tipos de Objetos
Java
Winterz 0 1,733 Último mensaje 28 Mayo 2014, 17:36 pm
por Winterz
Ayuda, obtener datos de Objetos en ArrayList « 1 2 »
Java
touchi 17 8,180 Último mensaje 28 Febrero 2015, 23:57 pm
por Usuario Invitado
¿Cómo manejar un ArrayList de objetos?
Java
luchi 2 3,024 Último mensaje 3 Septiembre 2016, 18:28 pm
por luchi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines