Ich habe das folgende Code-Snippet.Braucht NatTable nach repaintCell eine manuelle Aktualisierung?
int index = getEventList().indexOf(myObj);
SelectionLayer selectionLayer = getGlazedListsGridLayer()
.getBodyLayerStack().getSelectionLayer();
getNatTable().repaintCell(0,selectionLayer.getRowIndexByPosition(index));
Wenn ich den Code ausführen oben gezeigt, nur die betroffenen Zellen, nachdem ich auf dem Tisch in der Benutzeroberfläche angezeigt klicken Sie neu gestrichen. Wenn ich diesen Code auskommentiere und getNatTable().refresh();
benutze, überstreiche ich es, ohne dass ich zuerst auf den Tisch klicken muss.
Gibt es eine Möglichkeit, eine Zelle neu zu zeichnen, ohne auf die in der GUI angezeigte Tabelle klicken zu müssen? Ich würde hassen, Refresh() für eine große Tabelle aufrufen zu müssen, wo dieser Code viele Male ausgeführt werden kann.
Warum möchten Sie repaintCell() manuell aufrufen? –
Ich habe ein Bild auf dieser Zelle, die sich aufgrund eines externen Faktors ändern kann – ekjcfn3902039
Um genauer zu sein, registriere ich einen Rückruf mit externem Code. Durch den Callback bekomme ich das Objekt (myObj genannt) und benutze myObj, um die Zelle zu bestimmen, die geändert werden muss. Wenn ich RepaintCell() aufrufe, führt es den erforderlichen IConfigLabelAccumulator-Code erneut aus, um das richtige Bild zu bestimmen, das angezeigt werden soll. Der IConfigLabelAccumulator-Code ruft einen externen Dienst mit myObj auf, um zu bestimmen, welches Bild gezeichnet werden soll. Die in der Tabelle enthaltenen Daten ändern sich nicht, da das Bild von etwas außerhalb von myObj bestimmt wird. Mit anderen Worten, myObj hat keinen internen Wert, der sich ändert. – ekjcfn3902039