Saltar al contenido

Javafx: reordenar una columna en un TableView

Solución:

Ok, encontré cómo hacerlo. Lo resumiré aquí en caso de que sea útil para otros:

Antes actualiza el contenido de TableView, debe guardar el sortcolum (si lo hay) y el sortType:

        TableView rooms;
        ...
        TableColumn sortcolumn = null;
        SortType st = null;
        if (rooms.getSortOrder().size()>0) {
            sortcolumn = (TableColumn) rooms.getSortOrder().get(0);
            st = sortcolumn.getSortType();
        }

Luego, después de que hayas terminado de actualizar los datos en TableView, debe restaurar el estado de la columna de clasificación perdida y realizar una clasificación.

       if (sortcolumn!=null) {
            rooms.getSortOrder().add(sortcolumn);
            sortcolumn.setSortType(st);
            sortcolumn.setSortable(true); // This performs a sort
        }

No tomo en cuenta la posibilidad de tener múltiples columnas en el orden, pero esto sería muy sencillo de hacer con esta información.

Tuve el mismo problema y descubrí que después de una actualización de los datos, solo tiene que llamar a la función sort () en la vista de tabla:

TableView rooms;
...
// Update data of rooms
...
rooms.sort()

La vista de tabla conoce las columnas para clasificar, por lo que la función de clasificación clasificará los nuevos datos en el orden deseado. Esta función solo está disponible en Java 8.

Si su TableView no se reinicializa, también puede hacer lo siguiente:

TableColumn<BundleRow, ?> sortOrder = rooms.getSortOrder().get(0);
rooms.getSortOrder().clear();
rooms.getSortOrder().add(sortOrder);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *