Supongamos que tenemos una LinkedList con una lista de movimientos bancarios y queremos que su contenido aparezca en un JTable, de forma que se actualice automáticamente si cambiamos los datos del LinkedList.
- Lo primero es crear una clase que herede de AbstractTableModel.
- Redefinir los métodos siguientes:
String getColumnName(int columna)
. Tiene que devolver un String con el título de la columna indicadaint getColumnCount()
. Tiene que devolver un entero con el número de columnas de la lista de movimientos.int getRowCount()
. Tiene que devolver un entero con el número de filas de la lista de movimientos.Object getValueAt(int f, int c)
. Tiene que devolver el dato que deberá aparecer en la fila y columna indicadas.Un ejemplo, lo podemos ver en el listado siguiente:class InfoMovimientos extends AbstractTableModel { LinkedList listaMovimientos = null; public InfoMovimientos (LinkedList mov) { this.listaMovimientos = mov; } public String getColumnName (int column) { String[] nombreCols = { "Fecha", "Tipo", "Importe", "Saldo"} ; return nombreCols[column]; } public int getColumnCount() { return 4; } public int getRowCount() { if (cuenta != null) return listaMovimientos.size(); else return 0; } public Object getValueAt(int fila, int col) { Movimiento m = (Movimiento)listaMovimientos.get(fila); switch (col) { case 0: return m.fecha; case 1: switch (m.tipo) { case 'I': return "ingreso"; case 'R': return "reintegro"; } case 2: return new Float (m.importe); case 3: return new Float (m.saldo); } return ""; } }
- Asignar este modelo de datos al JTable:
//movimientos es un LinkedList con la lista de movimientos InfoMovimientos modelo = new InfoMovimientos(movimientos); mitabla = new JTable(modelo);
Average Rating