es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Orden incorrecto del ordenador de filas de la tabla.

Importé javax.swing.table.TableRowSorter;

Lo utilicé en el modelo de tabla. Funciona correctamente con cadenas de texto, pero con números ordena todo de manera extraña, como se muestra en la imagen. Soy novato en programación, así que no sé cómo buscar adecuadamente este problema en Google todavía.

aquí puedes ver la imagen.

DefaultTableModel model = new DefaultTableModel();
table.setAutoCreateRowSorter(true);

No estoy seguro si necesitas más código. Es un lío la verdad, ya que la programación orientada a objetos surgió en la escuela después de que comenzara esto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Problema con TableRowSorter en Java Swing JTable

    Si estás enfrentando un problema con TableRowSorter en Java Swing JTable donde no se están ordenando correctamente los números, es posible que necesites definir un comparador personalizado para ordenar los números.

    Cuando utilizas TableRowSorter con DefaultTableModel, se utiliza un comparador predeterminado que ordena los números como cadenas de texto, lo cual puede no ser el comportamiento deseado.

    Para definir un comparador personalizado, puedes utilizar el método setComparator de TableRowSorter. Aquí tienes un ejemplo:

    TableRowSorter<defaulttablemodel> sorter = new TableRowSorter<>(model);
    sorter.setComparator(columnIndex, new Comparator<integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }
    });
    table.setRowSorter(sorter);
    

    En el código anterior, reemplaza columnIndex con el índice de la columna que contiene los números que deseas ordenar.

    En el método compare, puedes definir tu propia lógica para ordenar los números. Por ejemplo, si deseas ordenar los números en orden descendente, puedes utilizar return o2.compareTo(o1); en su lugar.

    Espero que esto te ayude a resolver tu problema.

Comments are closed.