martes, 28 de mayo de 2024

modelo JTable con un Arraylist

 Siempre vi que habían ventajas en usar un ArrayList como modelo de un JTable y heredando de un AbstractTableModel, lo pongo aquí para cuando alguien lo necesite hacer de esta forma.

package modelo;


import java.util.ArrayList;


import javax.swing.table.AbstractTableModel;

public class ModeloTabla extends AbstractTableModel {

private static final long serialVersionUID = 1L;

private ArrayList<Object[]> data;

private String[] columnNames;


public ModeloTabla(ArrayList<Object[]> data, String[] columnNames) {

        this.data = data;

        this.columnNames = columnNames;

    }

    

public ModeloTabla(String[] columnNames) {

    this.data = new ArrayList<Object[]>();

    this.columnNames = columnNames;

    }

    

public ArrayList<Object[]> getdata(){

    return this.data;

    }


@Override

public int getRowCount() {

        return data.size();

    }


@Override

public int getColumnCount() {

        return columnNames.length;

    }


@Override

public String getColumnName(int columnIndex) {

        return columnNames[columnIndex];

    }

    

@Override

public Class<?> getColumnClass(int columnIndex){

        return getValueAt(0,columnIndex).getClass();

    }


@Override

public Object getValueAt(int rowIndex, int columnIndex) {

        return data.get(rowIndex)[columnIndex];

    }


@Override

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

        data.get(rowIndex)[columnIndex] = aValue;

        fireTableDataChanged();

    }


public void addRow(Object[] rowData) {

        int rowIndex = data.size();         

        data.add(rowData);

        fireTableRowsInserted(rowIndex, rowIndex);

    }

public void removeRow(int rowIndex) {

    data.remove(rowIndex);

    fireTableRowsDeleted(rowIndex, rowIndex);

    }


}


No hay comentarios:

Publicar un comentario