Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Actualizar JTable dentro de Jscroll

Estas en el tema de Actualizar JTable dentro de Jscroll en el foro de Java en Foros del Web. Hola chicos! Tengo un problema, y es que no soy capaz de actualizar una tabla. Cada vez que la quiero mostrar me muestra lo mismo, ...
  #1 (permalink)  
Antiguo 19/12/2012, 06:56
 
Fecha de Ingreso: octubre-2012
Mensajes: 25
Antigüedad: 11 años, 6 meses
Puntos: 3
Pregunta Actualizar JTable dentro de Jscroll

Hola chicos!

Tengo un problema, y es que no soy capaz de actualizar una tabla. Cada vez que la quiero mostrar me muestra lo mismo, a pesar de que la variable que contiene la información cambia.

La tabla está dentro de un JScrollPane y este, dentro de un GridBagLayout.

La tabla la creo así:

Código Java:
Ver original
  1. table = new JTable();
  2.         table.removeAll();
  3.         DefaultTableModel model = new DefaultTableModel();
  4.         model.setDataVector(comparador.data, col);
  5.         table.tableChanged(new TableModelEvent(table.getModel()));
  6.         model.fireTableChanged(new TableModelEvent(model));
  7.         model.fireTableDataChanged();  
  8.         table.setModel(model);
  9.         table.repaint();
  10.         table.updateUI();

Alguien sabe como podría hacer??

Gracias!
  #2 (permalink)  
Antiguo 20/12/2012, 07:20
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Actualizar JTable dentro de Jscroll

Bueno, si haces sólo lo que pone ahí, el JTable no está visible en ningún sitio, no lo añades a ninguna ventana.

Si ya tienes uno en alguna ventana que es el que quieres actualizar, en este trozo de código esta creando un nuevo JTable que no visualiza y le mete a él los nuevos datos, por lo que el JTable visible no cambia. Si es así, no hagas otra vez new JTable().

Tampoco es necesario tanto lio de tableChanged, fire y tal, el DefaultTableModel lo hace todo él solito sin necesidad de que lo hagas tú desde fuera. Simplemente construye tu DefaultTableModel y pásaselo a table.setModel(model). El repaint() y updateUI() también sobran.

Si quieres hacerlo mejor, tampoco hace falta crear un nuevo modelo, si ya tenias el JTable creado con un modelo. Puedes hacerlo asi

DefaultTableModel modelo = (DefaultTableModel)table.getModel();
modelo.setRowCount(0); // borra todo, quizás es innecesario si usas setDataVector()
modelo.setDataVector(comparador.data, col);

y listo, deberia refrescarse solo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: jscrollpane, jtable, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:54.