Ordenando filas por columnas en JTable

Cuando hace clic en el encabezado de columna en mi JTable, ordena las filas alfabéticamente. Esto funciona para todas mis columnas a excepción de una. En esta columna, los valores son todos cadenas, pero contienen números. Necesito que se ordenen en función de su valor decimal y no del valor de la cadena.

¿Alguna idea de cómo lograr esto?

por favor lea el tutorial sobre JTable que contiene el ejemplo TableRowSorter,

su respuesta es estas líneas de códigos, establezca la columna Class correctamente

 public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } // or could be in most cases hardcoded, and I'm using that too @Override public Class getColumnClass(int colNum) { switch (colNum) { case 0: return Integer.class; case 1: return Double.class; case 2: return Long.class; case 3: return Boolean.class; case 4: return String.class; case 5: return Icon.class; /*case 6: return Double.class; case 7: return Double.class; case 8: return Double.class;*/ default: return String.class; } } 

El clasificador de filas predeterminado ordenará en función de la clase de columna. Si la clase de columna es Object (el valor predeterminado), entonces usa el método toString() . Si puede cambiar lo que coloca en la columna a algo que implementa la interfaz Comparable (por ejemplo, Integer / Double), usará ese comparador en su lugar. También deberá cambiar la clase de columna en el modelo de tabla.

Para hacerlo, deberá extender DefaultTableModel (o implementar AbstractTableModel o TableModel) y anular el método getColumnClass ().

Si no puede cambiar los datos que entran en la columna (por alguna razón, desea almacenar cadenas allí), entonces deberá modificar RowSorter para la tabla.

 DefaultRowSorter rowSorter = new DefaultRowSorter(); rowSorter.setComparator(numberColumnIndex,numberSortingComparator); table.setRowSorter(rowSorter);