By default, it's sorting by the first column ascending and it's ok. The problem comes when I try to order the last two columns clicking the headers (Integer.class and Float.class). These columns have Integers and Floats with 3 and 4 digits. It sorts the integers/floats with 4 digits first and then the numbers with 3 digits (ascending) or upside down if I sort descending. The first three columns are Strings and they are well sorted. I would like to order either ascending or descending independently of the number of digits.
This is the code:
tablePlanes = new JTable();
JTableHeader cabecera = tablePlanes.getTableHeader();
tablePlanes.setModel(new DefaultTableModel(new Object[][] {},
new String[] { "Titulación", "Universidad", "Comunidad", "Precio", "Nota de corte" }) {
private static final long serialVersionUID = 1L;
Class[] columnTypes = new Class[] { String.class, String.class, String.class, Integer.class, Float.class };
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
});
DefaultTableCellRenderer modelocentrar = new DefaultTableCellRenderer();
((DefaultTableCellRenderer) cabecera.getDefaultRenderer()).setHorizontalAlignment(JLabel.CENTER);
modelocentrar.setHorizontalAlignment(SwingConstants.CENTER);
tablePlanes.getColumnModel().getColumn(0).setCellRenderer(modelocentrar);
tablePlanes.getColumnModel().getColumn(1).setCellRenderer(modelocentrar);
tablePlanes.getColumnModel().getColumn(2).setCellRenderer(modelocentrar);
tablePlanes.getColumnModel().getColumn(3).setCellRenderer(modelocentrar);
tablePlanes.getColumnModel().getColumn(4).setCellRenderer(modelocentrar);
tablePlanes.setAutoCreateRowSorter(true);
tablePlanes.getRowSorter().setSortKeys(Arrays.asList(new RowSorter.SortKey(0, SortOrder.ASCENDING)));
I also attach two snapshots of the Application.
Thank you so much in advance!