Pregunta

Actualmente estoy usando el siguiente método en mi jtable para obtener un tipo automático en las columnas

table.setAutoCreateRowSorter(true);

Actualmente, esto me permite hacer clic en cada encabezado y la columna correspondiente se ordenará para cualquier cosa con letras. Se está equivocando cuando intenta ordenar mis columnas que tienen enteros. Parece estar clasificando cada dígito a la vez en lugar de clasificar por el número real. Por ejemplo, dirá que 8 es mayor que 100 ya que 8 es mayor que 1. ¿Hay alguna forma de anular este comportamiento?

¿Fue útil?

Solución

Se está equivocando cuando intenta ordenar mis columnas que tienen enteros

Probablemente porque:

  1. Estás almacenando los números como cadenas, o
  2. Está almacenando los datos como un objeto entero pero no anuló el getColumnClass() Método de su Tablemodelo para devolver Integer.class para esa columna. El comparador adecuado solo se usará cuando su clase de columna sea correcta.

Vea la sección del tutorial de swing en Conceptos: Renderistas y editores Para obtener más información y un ejemplo de cómo podría anular el método GetColumnClass ().

Otros consejos

Probablemente necesite establecer un clasificador de fila con el comparador específico:

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

Aquí se puede encontrar más sobre el comparador y los posibles problemas con él. Pero, @camickr también tiene razón que si la clase de columna se establece correctamente, ya que el entero normalmente no debería ser necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top