Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NaTxosS en 29 Septiembre 2014, 12:41 pm



Título: Como modificar una celda de una tabla JTable
Publicado por: NaTxosS en 29 Septiembre 2014, 12:41 pm
Como puedo modificar una fila o celda con los datos de un JTextField?

Esto es lo que tengo ahora, pero el problema empieza en la linea "fastFood.getTblClientes().setValueAt(apellido1, row, 0);" , así que supongo o que no se hace con el setValueAt, o que no puedo poner un String como primer parámetro:

public void modificarCliente() {
       
        String apellido1 = editaCliente.getTxtApellido1Editar();
        String apellido2 = editaCliente.getTxtApellido2Editar();
        String nombre = editaCliente.getTxtNombreEditar();
        int row = fastFood.sacarFila();
        fastFood.getTblClientes().setValueAt(apellido1, row, 0);
        fastFood.getTblClientes().setValueAt(apellido2, row, 1);
        fastFood.getTblClientes().setValueAt(nombre, row, 2);
    }

Gracias de antemano. saludos


Título: Re: Como modificar una celda de una tabla JTable
Publicado por: Chuidiang en 30 Septiembre 2014, 20:04 pm
Entiendo que "el problema empieza en la linea ..." quiere decir que llamas a eso y no se actualiza el JTable.

En principio está bien, si getTblClientes() te está devolviendo el JTable que quieres modificar. Supongo también que no estás usando un TableModel tuyo propio, sino que usas el que el JTable tiene por defecto.

Si no te funciona, el error debe estar en otro lado. Suele ser un error habitual (no sé si eres principiante) el instanciar sin querer el JTable varias veces y modificar el que no está visible.

Se bueno.


Título: Re: Como modificar una celda de una tabla JTable
Publicado por: NaTxosS en 1 Octubre 2014, 11:19 am
Se ha notado que soy novato,  ;D. Puede que sea lo que dices, pero la excepción me sale esto:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
   at java.util.Vector.elementData(Vector.java:734)
.
.
.
.

y haciendo un Debug veo que row vale -1, y esta seleccionada una fila de la tabla (a no ser que al hacer clic en el botón Modificar se pierda la selección, no se), entonces te pregunto, ¿esto que te comento es debido al error que me comentas que he podido cometer? ó ¿es otro error diferente?

Muchas gracias.


PD: la JTable si es la que viene por defecto
     
       sacarFila es un método que tengo en la ventana principal y que uso en otros métodos, la tengo así:

public int sacarFila() {
       
        return row = tblClientes.getSelectedRow();
    }


Título: Re: Como modificar una celda de una tabla JTable
Publicado por: Chuidiang en 1 Octubre 2014, 20:29 pm
Difícil contestar. Esto

int row = fastFood.sacarFila();

está devolviendo -1, sin ver el código de sacarFila().

Se bueno.


Título: Re: Como modificar una celda de una tabla JTable
Publicado por: NaTxosS en 1 Octubre 2014, 21:33 pm
Te lo puse debajo., en la pd:


Título: Re: Como modificar una celda de una tabla JTable
Publicado por: NaTxosS en 6 Octubre 2014, 19:04 pm
Ya esta solucionado, el problema estaba en como accedía a la tabla:

    public void modificarCliente() {
       
        String apellido1 = editaCliente.getTxtApellido1Editar();
        String apellido2 = editaCliente.getTxtApellido2Editar();
        String nombre = editaCliente.getTxtNombreEditar();
       
        int fila = editaCliente.getFastFoodCompany().sacarFila();
       
        editaCliente.getFastFoodCompany().getTblClientes().setValueAt(apellido1, fila, 0);
        editaCliente.getFastFoodCompany().getTblClientes().setValueAt(apellido2, fila, 1);
        editaCliente.getFastFoodCompany().getTblClientes().setValueAt(nombre, fila, 2);
        editaCliente.getFastFoodCompany().getPanelTabla().setViewportView(editaCliente.getFastFoodCompany().getTblClientes());
       
        limpiarFormulario();
    }

Muchas Gracias Chuidiang, SAludos