In meiner Anwendung habe ich eine JTable mit einigen Rows,
von denen beispielsweise die mit Index 4 ausgewählt ist.
Die Background-Color der selektierten Row unterscheiden sich von den nicht selektierten
über
wurde die Sortierfunktion aktiviert.
Wenn ich jetzt nun nach einer Spalte sortiere und die ursprünglich selektierte Spalte beispielsweise an position 1 wandert ist jetzt 1 und 4 selektiert.
Ich habe keine Möglichkeit gefunden die ursprünglich Selektion auf einfache Weise zu erhalten.
Dann habe ich nach Googlen gefunden, dass man über
die neuen Indexe der selektierten Spalten ermitteln kann,
etwas umständlich aber meinetwegen.
Nun wollte ich zunächst mit
die selektion löschen und dann wieder setzen
das scheitert daran, das die Selektion sich nicht löschen lässt.
In irgendeinem blog his es, man müsse vorher den focus der jtable verlassen
aber nicht einmal das geht:
funktioniert auch nicht.
Nun bin ich mit mit meinem Latein am Ende
kann es wirklich so schwierig / umständlich sein, die Selektion von
von Rows nach Sortierung zu erhalten.
Bei Mehrfachselektion behält zuletzt selektierte Row den focus allerdings stimmen die anderen
Selektierten Rows nicht mehr
Es gibt controls (im .NET !) die das automatisch machen.
Danke für einen Tipp
von denen beispielsweise die mit Index 4 ausgewählt ist.
Die Background-Color der selektierten Row unterscheiden sich von den nicht selektierten
über
Java:
table.setAutoCreateRowSorter(true);
Wenn ich jetzt nun nach einer Spalte sortiere und die ursprünglich selektierte Spalte beispielsweise an position 1 wandert ist jetzt 1 und 4 selektiert.
Ich habe keine Möglichkeit gefunden die ursprünglich Selektion auf einfache Weise zu erhalten.
Dann habe ich nach Googlen gefunden, dass man über
Java:
int[] selectedRows = table.getSelectedRows();
List<Integer> newSelection = new ArrayList<Integer>();
for (int index : selectedRows)
{
newSelection.add(table.convertRowIndexToView(index));
}
die neuen Indexe der selektierten Spalten ermitteln kann,
etwas umständlich aber meinetwegen.
Nun wollte ich zunächst mit
Java:
table.getSelectionModel().clearSelection();
die selektion löschen und dann wieder setzen
Java:
for (int index : newSelection)
{
table.setRowSelectionInterval(index, index);
}
das scheitert daran, das die Selektion sich nicht löschen lässt.
In irgendeinem blog his es, man müsse vorher den focus der jtable verlassen
aber nicht einmal das geht:
Java:
public void focusLost(FocusEvent e) {
table.getSelectionModel().clearSelection();
table.clearSelection();
}
Java:
table.removeRowSelectionInterval();
funktioniert auch nicht.
Nun bin ich mit mit meinem Latein am Ende
kann es wirklich so schwierig / umständlich sein, die Selektion von
von Rows nach Sortierung zu erhalten.
Bei Mehrfachselektion behält zuletzt selektierte Row den focus allerdings stimmen die anderen
Selektierten Rows nicht mehr
Es gibt controls (im .NET !) die das automatisch machen.
Danke für einen Tipp
Zuletzt bearbeitet: