Java - JTable y AbstractModel

 
Vista:

JTable y AbstractModel

Publicado por andreafuhr (15 intervenciones) el 23/06/2008 18:58:36
Hola gente: les cuento que tengo una clase que hereda de AbstractModel en la cual defino el nro de columnas a mostrar, el contenido de las filas, etc.
Luego tengo una JTable la cual se base en este modelo.
Cuál es mi problema?
Al momento de lanzar la tabla para que el usuario visualize los datos esta OK (no muestro todas las filas, solo las que cumplen un criterio de filtro), pero luego cuando hago clic sobre el titulo de alguna de las columnas...CHAN!!!! aparecen todas!!!! y se me fue el filtro...

aqui les pego el codigo implementado en el modelo:

public class TableModel extends AbstractTableModel {

private static final long serialVersionUID = 1L;
List<FactCabecera> filas;
Facturas facturas = new Facturas();
public static final int NroFactura = 0;
public static final int Fecha = 1;
public static final int Cliente = 2;
public static final int Subtotal = 3;
public static final int Descuento = 4;
public static final int Impuesto = 5;
public static final int Total = 6;

String[] headers = {"NroFactura", "Fecha", "Cliente", "Subtotal", "Descuento", "Impuesto", "Total"};

public TableModel() {
this.filas = new ArrayList <FactCabecera>();
for (int i=0;i<facturas.getFacturas().size();i++)
{
FactCabecera f = facturas.getFacturas().get(i);
this.addElement(f);
}
}
public TableModel(int cliente) {
filas = new ArrayList<FactCabecera>();
Facturas todas = new Facturas();
//buscamos las facturas que corresponden a nuestro filtro
for (int i=0;i<todas.getFacturas().size();i++)
{
FactCabecera f = todas.getFacturas().get(i);
if (f.getCliente().getIdCliente() == cliente)
this.addElement(f);

}
}

public void addElement(FactCabecera name) {
filas.add(name);
this.fireTableDataChanged();
}

public void removeElement(FactCabecera name) {
filas.remove(name);
this.fireTableDataChanged();
}

public void setEntries(List<FactCabecera> names) {
for (FactCabecera contact : names) {
filas.add(contact);
}
}

@Override
public String getColumnName(int i) {
return headers[i];
}

public int getColumnCount() {
return headers.length;
}

public int getRowCount() {
return filas.size();
}

public Object getRowAt(int row) {
return filas.get(row);
}

public void setRowAt(FactCabecera name, int row) {
filas.set(row, name);
this.fireTableRowsUpdated(row, row);

}

public Object getValueAt(int row, int col) {

switch (col) {
case NroFactura:
return filas.get(row).getIdFactura();
case Fecha:
return filas.get(row).getFecha();
case Cliente:
return filas.get(row).getCliente().getIdCliente() + " - " + filas.get(row).getCliente().getNombreyApellido();
case Subtotal:
return filas.get(row).getSubtotal();
case Descuento:
return filas.get(row).getDescuento();
case Impuesto:
return filas.get(row).getImpuesto();
case Total:
return filas.get(row).getImporteTotal();
}
return (Object) null;
}

public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}


}

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder