Вам нужно будет обработать выбор самостоятельно.Причина в том, что методы selectPrevious()
и selectNext()
пытаются выбрать предыдущую (или следующую), не удаляя текущую выбранную строку (когда вы устанавливаете режим выбора на SelectionMode.MULTIPLE
), вы также не можете их использоватьи просто удалите предыдущий выбор, просто вызвав clearSelection()
, потому что при этом для выбранного индекса будет установлено значение -1, а затем методы selectPrevious()
и selectNext()
будут выбирать только последнюю или первую строку.
ЗдесьВот как вы можете осуществить выбор самостоятельно:
// the rest of your switch statement
...
case TAB:
// Find the current selected row
int currentSelection = table.getSelectionModel().getSelectedIndex();
// remove the previous selection
table.getSelectionModel().clearSelection();
if (event.isShiftDown()) {
currentSelection--;
} else {
currentSelection++;
}
// find the size of our table
int size = table.getItems().size() - 1;
// we was on the first element and we try to go back
if(currentSelection < 0){
// either do nothing or select the last entry
table.getSelectionModel().select(size);
}else if(currentSelection > size) {
// we are at the last index, do nothing or go to 0
table.getSelectionModel().select(0);
}else {
// we are between (0,size)
table.getSelectionModel().select(currentSelection);
}
event.consume();
break;
...