Cela peut être fait en vous inscrivant ILayerListener
. La seule chose à garder à l'esprit est que le SortColumnEvent
est tiré en premier et ensuite le GlazedListsEventLayer
déclenche un RowStructuralRefreshEvent
pour déclencher le repeindre. Cela supprimera la sélection lorsque vous n'utilisez pas le RowSelectionModel
. Par conséquent, les auditeurs doivent être conçus de manière réactive.
// an ILayerListener that performs a selection after a refresh and
// unregisters itself afterwards
ILayerListener sortListener = new ILayerListener() {
@Override
public void handleLayerEvent(ILayerEvent event) {
if (event instanceof RowStructuralRefreshEvent) {
natTable.doCommand(new SelectRowsCommand(natTable,
1, 1, false, false));
natTable.removeLayerListener(this);
}
}
};
// register an ILayerListener that registers the above listener
// on a SortColumnEvent
natTable.addLayerListener(new ILayerListener() {
@Override
public void handleLayerEvent(ILayerEvent event) {
if (event instanceof SortColumnEvent) {
natTable.addLayerListener(sortListener);
}
}
});
Merci pour votre réponse ... une chose que je dois savoir .... que comment pouvons-nous placer une ligne sélectionnée dans la première position de la table ... après tri .... – Suraj
Dans ce cas, vous devez changer l'algorithme de tri ou travailler avec RowReorderLayer. Rien à expliquer en somme gratuitement. –