Java - Enlazar 3 clases.

   
Vista:

Enlazar 3 clases.

Publicado por Alejandro (3 intervenciones) el 24/05/2014 06:21:08
No sé cual sea un nombre apropiado para esta consulta ya que no se que sea la causa, pero la idea es esa, enlazar 3 clases. Después de darle varias vueltas al asunto, no pude figurar que es lo que estoy haciendo mal.

La clase principal (GUI), crea en tiempo de ejecución y en función a una determinada cantidad componentes para mostrar la información relacionada a un articulo de venta.

Por lo que dependiendo esta cantidad se crearan tantos objetos sean necesarios de otra clase que describo a continuación:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Package e Imports
 
public class InformacionArticulo extends JPanel{
 
        Carrito carrito = new Carrito();
 
        private JButton jButtonComprar;
 
        String nombre;
        String precio;
 
    public InformacionArticulo(
 
                String nombre ,
                String precio
 
        ){
 
                this.nombre = nombre;
                this.precio = precio;
 
                formato(); // Utilizado para medidas y dar formato a los componentes
    }
 
    private void formato(){
 
            jButtonComprar.addActionListener(new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent evt){
                    carrito.agregar(nombre , precio);
                }
            });
 
            add(jButtonComprar);
    }
}


De lo anterior elimine código irrelevante para no hacer tan largo el tema. Entonces de la anterior clase lo importante es el botón jButtonComprar y su Action Performed, el cual al ser presionado se deberá estar cargando información en una tabla de la clase principal (GUI) a traves del médoto agregar() de la clase Carrito

Clase Carrito

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Carrito {
 
    InterfacePrincipal gui = new InterfacePrincipal; // *Nota Importante, esta es la clase principal
 
    public Carrito(){}
 
    public void agregar(String nombre , String precio){
 
        String vector[] = {"#", nombre , precio};
        DefaultTableModel modelo = (DefaultTableModel)gui.getModeloTablaCarrito();
        modelo.addRow(vector);
 
        System.out.println("Termina método agregar");
    }
}


De donde getModeloTablaCarrito() devuelve el modelo de la tabla donde se muestran los articulos agregados al carrito. Posteriormente se agrega una fila con vector como Data al modelo de la tabla que se encuentra en GUI.

Pero el problema está en que no se ve reflejado en la tabla, y he comprobado que se el ActionPerformed del jButtonComprar funcionan, las variables nombre y precio son las correctas y pasan correctamente a agregar() de Carrito, e inclusive se imprime "Termina método agregar". Por lo que sé que paso por todo lo anterior dentro de ese método.

*Nota Importante Aquí lo que hice fue solo hacer la referencia, es decir, InterfacePrincipal gui; pero obtenia un NullPointerException, que supongo era lógico, pero de lo que no estoy seguro es si al crear un Objeto InterffacePrincipal, se crea otro totalmente diferente al original de la Clase Principal (GUI) puesto que dentro del constructor de InferfacePrincipal se inicializan todos los componentes,

Estoy trabjando en NetBeans, y he probado el código para agregar filas con vector como Data dentro de la misma clase principal donde se encuentra la Tabla y funciona correctamente. El problema es que no sé que es lo que está pasando,

En si, InferfacePrincipal llama a InformacionArticulos el cual llama a Carrito el cual llama a InterfacePrincipal para obtener su Tabla y agregar filas con cierta información..


¿Qué es lo que está pasando?
¿Qué estoy haciendo mal?
¿Qu'e otra solución puedo ofrecer para agregar un articulo al carrito?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder