Actualización de los datos de una JTable

291 views
Skip to first unread message

Adrián E. Córdoba

unread,
Sep 30, 2009, 5:35:25 PM9/30/09
to JavaSOS
Hola amigos!
Tengo una JTable (table) que muestra los datos contenidos en un array
(data) de dos dimensiones, el cual es actualizado por otra parte de la
aplicación:

public class Panel1 extends JPanel
{
public Panel1(int[][] originalData)
{
// Copiado de datos desde "originalData" en "data".

tableTableModel = new MiTableModel();
table = new JTable(tableTableModel);
JScrollPane pane = new JScrollPane(table);
add(pane);
}

private class MiTableModel extends AbstractTableModel
{
public Object getValueAt(int row, int column)
{
return data[row][column];
}
public int getRowCount()
{
return data.length;
}
public int getColumnCount()
{
return data[0].length;
}
}

int[][] data;
JTable table;
TableModel tableTableModel
}

El problema es que cuando la aplicación cambia los datos (data), estos
cambios no se reflejan en la tabla (table).
¿Cómo debo hacer para que los datos que muestra la tabla reflejen los
cambios en los datos subyacentes (el array de datos)?

(He visto varios temas parecidos en Internet, pero en realidad
muestran el problema inverso: como actualizar los datos subyacentes
cuando se cambia o edita una celda de la Jtable.)

Desde ya, muchas gracias.
Saludos.
[Adrián]

Marcelo Mora Miranda

unread,
Sep 30, 2009, 5:48:28 PM9/30/09
to jav...@googlegroups.com
pues carga de nuevo tu tabla, pero antes debes limpiar tu tabla con el siguiente codigo
MiTablaModelo.getdatavector.clear;

te portas bien, no bebas mucho


Explore the seven wonders of the world Learn more!

Adrián E. Córdoba

unread,
Sep 30, 2009, 7:23:56 PM9/30/09
to JavaSOS
Gracias por tu respuesta.
Pero he agregado:

table = new JTable(tableTableModel);

luego de que se agregaron datos al array "data", pero nada sucedió. (A
eso te referías con cargar de nuevo la tabla, ¿no?)
Tampoco compila " MiTablaModelo.getdatavector.clear;" (No existe
"getdatavector" o "getdatavector()".

Saludos
[Adrián]


On 30 sep, 18:48, Marcelo Mora Miranda <moramarcelo...@hotmail.com>
wrote:
> pues carga de nuevo tu tabla, pero antes debes limpiar tu tabla con el siguiente codigo
> MiTablaModelo.getdatavector.clear;
>
> te portas bien, no bebas mucho
>
> _________________________________________________________________
> Explore the seven wonders of the worldhttp://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE

Marcelo Mora Miranda

unread,
Oct 1, 2009, 8:41:01 AM10/1/09
to jav...@googlegroups.com
aqui te dejo un ejemplo


package project1;

import java.awt.Dimension;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class FPrueba extends JFrame
{
    DefaultTableModel TablaModelo = new DefaultTableModel();
    private JTable jTable1 = new JTable(TablaModelo);
    private JScrollPane jScrollPane1 = new JScrollPane();

    public FPrueba()
    {
        try
        {
            jbInit();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    private void jbInit() throws Exception
    {
        this.getContentPane().setLayout( null );
        this.setSize( new Dimension(400, 300) );
        jScrollPane1.setBounds(new Rectangle(40, 65, 170, 155));
        jScrollPane1.getViewport().add(jTable1, null);
        this.getContentPane().add(jScrollPane1, null);
        TablaModelo.addColumn("Columna1");
        TablaModelo.addColumn("Columna2");
        CargarTabla();
    }
   
    public static void main(String[] args)
    {
        System.out.println("system property java.class.path = " + System.getProperty("java.class.path")); // para obtener las lib utilizadas
        FPrueba FP = new FPrueba();
        FP.setVisible(true);
    }
   
    public void CargarTabla()
    {
        TablaModelo.getDataVector().clear(); // este funciona con el JDK 1.6 para adelante
        //aqui capturas todos tus datos nuevamente desde tu base y los vuelves a cargar
        jScrollPane1.removeAll();
        ArrayList DatosDeBase = obtenerDatosDesdeBaseDeDatos();
        Iterator n = DatosDeBase.iterator();
         while (n.hasNext())
         {
             Object[]  Fila = new Object[2];
             TuClase CB = (TuClase)n.next();
            
             Fila[0] = CB.getDato1();
             Fila[1] = CB.getDato2();
            
             TablaModelo.addRow(Fila);
         }
    }
}


ah otra cosa, mi IDE es JDeveloper 10g,

te portas bien, no bebas mucho



Get news, entertainment and everything you care about at Live.com. Check it out!
Reply all
Reply to author
Forward
0 new messages