De nuevo yo. Me autorespondo. Logré ordenar los datos. En una misma tabla tengo fechas (en la columna 5) e importes (en la columna 6). Cuando creo la tabla, desde NetBeans, hago las fechas como LONG y lo almaceno de la siguiente forma: YYYYMMDD; y los importes como DOUBLE. Ahora bien... las fechas debo mostrarlas como DD/MM/YYYY y los importes como #,###,###.## pero el NB me muestra los DOUBLES como #######.##
Para solucionar esto, creé 2 clases:
DateCellRenderer y
DecimalCellRenderer y en ambas redefino el método
getTableCellRendererComponent de la siguiente forma:
Código Javascript
:
Ver originalpublic class DateCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
String fecha = value.toString().substring(6) + "/" + value.toString().substring(4, 6) + "/" + value.toString().substring(0, 4);
this.setText(fecha);
return this;
}
}
public class DecimalCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
String importe = value.toString();
int pos = importe.length();
if (importe.charAt(pos - 2) == '.'){
importe = importe + "0";
pos = pos - 5;
}
else
pos = pos - 6;
while (pos > 0){
importe = importe.substring(0, pos) + "," + importe.substring(pos);
pos = pos - 3;
}
this.setHorizontalAlignment(SwingConstants.RIGHT);
this.setText(importe);
return this;
}
}
Y luego hago las llamadas correspondientes:
Código Javascript
:
Ver originalTableColumnModel m = tbl_filtros.getColumnModel();
m.getColumn(5).setCellRenderer(new DateCellRenderer());
m.getColumn(6).setCellRenderer(new DecimalCellRenderer());
Espero haber aclarado el tema. Muchas gracias a todos. Saludos