Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Actualizar jTable al insertar un registro en Base de datos

Hola a todos! Soy un novato programando en java y quisiera que me ayuden. Tengo un jTable donde listo ciertos datos, el tema esta en que quiero que ese jTable se actualice cada vez que inserto un nuevo registro o cuando hago alguna modificación en alguno de ellos. ¿Como puedo hacerlo?... Estoy usando netbeans, mysql. Les agradezco de antemano.

PD: ya tengo un thread corriendo detrás pero el tema esta en que cada cierto tiempo me sale error al listar como por ejemplo que una de las columnas no se encuentra o que tengo error en mi sintaxis sql. He revisado pero todo ok, si tuviese error me informara desde que cargo el Form, pero nada.

marzo 8, 2015 | Unregistered Commenterjesus cornejo

Normalmente, los métodos de la implementación del TableModel disparan los eventos necesarios para que la JTable se actualice automáticamente.
No dices si estás usando una implementación propia o la por defecto del JDK.

"... me sale error al listar"
Si no dices qué error...

marzo 8, 2015 | Registered Commenterchoces

Amigo gracias por tu respuesta! te comento, estoy usando DefaultTableModel.

Cuando hablo del error me refiero al momento de listar. como te digo tengo un Thread que llama a un método listar, entonces raras veces en el método de listar el error me dice: Column no found "id_modalidad", me entiendes? osea no encuentra una columna o sino me dice que la consulta esta mal, pero raras veces, incluso hay veces que ni sale.

Como me dices tu hay metodos ya implementados que hace que el jTable se actualice solo quiero saber cuales o cual es y como usarlo. para evitar estar usando el thread porfavor ayudame.

te paso algo de código
//aqui defino un array con los nombres de las columnas
String[][] filas = {};
String[] cabecera = {"N° RT, "Título"}; //encabezado de columnas... aparecera una vez ejecutada
String[] filassig = new String[2]; // son 5 campos

//esto tengo en el constructor
this.jTable1.setModel(new javax.swing.table.DefaultTableModel(filas, cabecera));

//aquí relleno el jtable
private void completa_textfield() {

tabla = (DefaultTableModel) this.jTable1.getModel();//inicializamos la tabla

objRequiTec = new requisicion_tecnica_controller();
ArrayList<requisicion_tecnica_modelo> arreglo = null;

//Raras veces cuando entra aquí me dice que no encontró columnas o que esta mal la consulta pero reviso y todo bien
objRequiTec.doListarRequisicionTecnica();//llamamos al método listar

arreglo = objRequiTec.getArreglo();//obtenemos el arreglo
int value =arreglo.size();//obtenemos el tamaño

if ((value > val) || (value < val)) {//si la cantidad actual es menor o mayor a la nueva

//eliminamos registros de tablas y texfield
tabla.setRowCount(0);

for (int i = 0; i < value; i++) {//recorremos el arreglo

filassig[0] = arreglo.get(i).getNumero_requisicion_tecnica();
filassig[1] = arreglo.get(i).getTitulo_requisicion_tecnica();

tabla.addRow(filassig);//completamos tabla
}
}
objRequiTec = null;
}

//este es mi thread
public void run() {
ct = Thread.currentThread();
while (ct == h1) {
while(this.isClosed()==false){//mientras el form este abierto
completa_textfield();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}
}
}

marzo 8, 2015 | Unregistered Commenterjesus cornejo

Amigo por siacaso la variable val es esta
val = this.jTable1.getRowCount();//obtenemos la cantidad de filas

lo hago para comparar la cant ya exacta y la cant nueva

Todo ese codigo es cuando inserto uno nuevo pero si actualizo un dato? la cant es la misma como hago para q el jtable se actulzie automáticamente

marzo 8, 2015 | Unregistered Commenterjesus cornejo

El método setValueAt también envía un evento a la JTable. Puedes usarlo para actualizar lo que necesites.

http://docs.oracle.com/javase/8/docs/api/javax/swing/table/DefaultTableModel.html#setValueAt-java.lang.Object-int-int-

marzo 8, 2015 | Registered Commenterchoces