Como modificar una celda de una tabla JTable

Iniciado por NaTxosS, 29 Septiembre 2014, 12:41 PM

0 Miembros y 1 Visitante están viendo este tema.

NaTxosS

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
La mejor manera de hacerse optimista es pisando una buena mielda.

Chuidiang

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.

NaTxosS

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();
    }
La mejor manera de hacerse optimista es pisando una buena mielda.

Chuidiang

Difícil contestar. Esto

int row = fastFood.sacarFila();

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

Se bueno.

NaTxosS

La mejor manera de hacerse optimista es pisando una buena mielda.

NaTxosS

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
La mejor manera de hacerse optimista es pisando una buena mielda.