Java Classes and vectors an invoice

0

I am new to java, we are doing a job on invoicing where we have to create the class and forms, in each form the information is placed either of the client, employee and others as required and when going to the invoicing form we should to be able to obtain the information of the client only with the ID, as well as products and other information that is kept in the corresponding frames.

When we are going to save, apparently if it does but look for the information that is saved does not result, here is the code that implements in the main as well as jframe main and children.

jframe principal is frmformulario;

MAIN:

I call each class:

private static frmformulario formulario;
private static frmCliente Cliente;
private static Cliente cliente[];
private static Departamento departamento[];
private static Empleado empleado[];
private static Ferreteria ferreteria[];
private static Pedido pedido[];
private static Producto producto[];
private static int contador;

For each class there is an instance:

   cliente = new Cliente[100];

            for( int i=0; i<100; i++){
                 cliente[i]=new Cliente();

                }
                  contador=0; 

Save method:

    public static void guardar_cliente(int c, String n, String d, int t, 
    String co){

cliente[contador].setCedula(c);
cliente[contador].setNombre(n);
cliente[contador].setDireccion(d);
cliente[contador].setTelefono(t);
cliente[contador].setCorreo(co);


contador++;
}

Search method:

public static void buscar_cliente(int bus){

    for(int j=0; j < cliente.length; j++){
        if(cliente[j].getCedula() == bus){
           Cliente.cargardatos(cliente[j]);

        }
    }

}

In the jframe son, either Client or another button, save the following code:

    String ce=txtcedula.getText();
    String n=txtnombre.getText();
    String d=txtdireccion.getText();
    String te=txttelefono.getText();
    String co=txtcorreo.getText();

    int c= Integer.parseInt(ce);
    int t= Integer.parseInt(te);

    frmformulario.guardar_cliente(c,n,d,t,co);

    txtcedula.setText("");
    txtnombre.setText("");
    txtdireccion.setText("");
    txttelefono.setText("");
    txtcorreo.setText("");

In the jframe invoice button inquiry:

int buscar= Integer.parseInt(txtcedula.getText());
    frmformulario.buscar_cliente(buscar);

within the jframe turnover:

public void cargardatos(Cliente cli){    

    this.txtnombre.setText(cli.getNombre());
    this.txtdireccion.setText(cli.getDireccion());
    this.txttelefono.setText(Integer.toString(cli.getTelefono()));
    this.txtcorreo.setText(cli.getCorreo());

}

When I try to use the search button in the jframe invoice I get the following error:

  

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException     at project.frmformulario.buscar_cliente (frmformulario.java:332) at   project.frmClient.btnconsultaActionPerformed (frmCliente.java:188)     at project.frmCliente.access $ 200 (frmCliente.java:12) at   project.frmClient $ 3.actionPerformed (frmCliente.java:77) 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.JToggleButton $ ToggleButtonModel.setPressed (JToggleButton.java:308)     at   javax.swing.plaf.basic.BasicButtonListener.mouseReleased (BasicButtonListener.java:252)     at java.awt.Component.processMouseEvent (Component.java:6533) at   javax.swing.JComponent.processMouseEvent (JComponent.java:3324) at   java.awt.Component.processEvent (Component.java:6298) at   java.awt.Container.processEvent (Container.java:2236) at   java.awt.Component.dispatchEventImpl (Component.java:4889) at   java.awt.Container.dispatchEventImpl (Container.java:2294) at   java.awt.Component.dispatchEvent (Component.java:4711) at   java.awt.LightweightDispatcher.retargetMouseEvent (Container.java:4888)     at   java.awt.LightweightDispatcher.processMouseEvent (Container.java:4525)     at java.awt.LightweightDispatcher.dispatchEvent (Container.java:4466)     at java.awt.Container.dispatchEventImpl (Container.java:2280) at   java.awt.Window.dispatchEventImpl (Window.java:2746) at   java.awt.Component.dispatchEvent (Component.java:4711) at   java.awt.EventQueue.dispatchEventImpl (EventQueue.java:758) 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:76)     at   java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:86)     at java.awt.EventQueue $ 4.run (EventQueue.java:731) at   java.awt.EventQueue $ 4.run (EventQueue.java:729) at   java.security.AccessController.doPrivileged (Native Method) at   java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:76)     at java.awt.EventQueue.dispatchEvent (EventQueue.java:728) at   java.awt.EventDispatchThread.pumpOneEventForFilters (EventDispatchThread.java:201)     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)

    
asked by user75810 27.04.2018 в 20:36
source

1 answer

0

As far as I can see, it's that your method of loading_data

public void cargardatos(Cliente cli){

    this.txtnombre.setText(cli.getNombre());
    this.txtdireccion.setText(cli.getDireccion());
    this.txttelefono.setText(Integer.toString(cli.getTelefono()));
    this.txtcorreo.setText(cli.getCorreo());

}

is a non-static method, in your call you are doing, you do it as if it were static:

    public static void buscar_cliente(int bus){

    for(int j=0; j < cliente.length; j++){
        if(cliente[j].getCedula() == bus){
           Cliente.cargardatos(cliente[j]);       //Acá lo hiciste como static
                                                  //Son invocaciones sin necedidad de crear una instancia de un objeto. 

        }
    }

}

But the problem is not that.

In addition, the error that shows you indicates that the variable you are trying to access does not exist or is null .

What I recommend is to use a list of type Client, to have a "repository" of them. A vector is fine but it has limits. In a list, clients are searched for their iteration and are added in ascending order.

In case you do not have to use a list, then a vector of client type works, for each new client a space is created in memory and this way you will obtain your data without receiving a NullPointerException.

Cliente arrayClientes[] = new Cliente[100];
arrayClientes[0] = new Cliente(cedula, nombre, direccion, telefono, correo);
arrayClientes[1] = new Cliente(cedula, nombre, direccion, telefono, correo);
arrayClientes[2] = new Cliente(cedula, nombre, direccion, telefono, correo);
    
answered by 27.04.2018 в 21:48