llenar java javafx treeview repaint

llenar - Los controles javafx listview y treeview no se repintan correctamente



llenar listview javafx (1)

El elemento de updateItem(...) su fábrica de updateItem(...) necesita manejar el caso donde la celda está vacía. Este será exactamente el escenario en el que se eliminará el artículo (o se quedará vacío porque se contrajo un nodo en el TreeView ) y la celda que mostró previamente un elemento se reutilizará como una celda vacía:

public ListCell<T> call(final ListView<T> param) { ListCell<T> cell = new ListCell<T>(){ @Override protected void updateItem(final T persistentObject, final boolean empty) { super.updateItem(persistentObject, empty); if (empty) { setText(null); setGraphic(null); } else { // ... rest of your code. } } } return cell ; }

Estoy tratando de poner elementos en una vista de lista y vista de árbol con javafx, pero ambos controles no actualizarán su contenido. Estoy usando una lista obvservable para controlar los elementos y cada vez que elimino un elemento, listview o treeview lo eliminan de la fuente de datos. pero la vista no se está actualizando todavía estoy viendo todos los artículos. la única diferencia es que el elemento eliminado ya no se puede seleccionar. por ejemplo, el enlace 2 muestra la lista de elementos colapsados. La imagen 1 muestra los elementos antes de que se colapsen. los artículos están contraídos, pero la entrada anterior aún está visible. ¿Alguien sabe una solución para este problema? gracias a todos por ayudarme

link 1: treeview no está contraído link 2: treeview está contraído pero no actualiza la vista anterior

esta es la fábrica de celdas personalizadas que uso para mostrar una vista de lista:

public ListCell<T> call(final ListView<T> param) { ListCell<T> cell = new ListCell<T>(){ @Override protected void updateItem(final T persistentObject, final boolean empty) { super.updateItem(persistentObject, empty); if(persistentObject instanceof POProcessStep){ POProcessStep poProcessStep = (POProcessStep) persistentObject; if (persistentObject != null) { super.setText(poProcessStep.getId() + " - " + poProcessStep.getTitle()); } }else if(persistentObject instanceof POProcess){ POProcess poProcess = (POProcess) persistentObject; if (persistentObject != null) { super.setText(poProcess.getId() + " - " + poProcess.getTitle()); } }else if(persistentObject instanceof POCategory){ POCategory poCategory = (POCategory) persistentObject; if(persistentObject != null){ super.setText(poCategory.getId() + " - " + poCategory.getTitle()); } }else if(persistentObject instanceof String){ if(persistentObject != null){ super.setText(String.valueOf(persistentObject)); } } super.setGraphic(null); } }; return cell; }