Q:

SelectionMode.MULTIPLE with TAB to navigate to next cell

I'm currently using TAB to navigate to next cell. selectNext() or selectRightCell() works fine when I'm using SelectionMode.SINGLE. 
However, when using SelectionMode.MULTIPLE, its selecting multiple cells as I TAB.
I'm using a TableView. I need SelectionMode.MULTIPLE for the copy & paste function.
Is there a way to make it work in SelectionMode.MULTIPLE?
    fixedTable.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {
            switch (event.getCode()){
                case TAB:
                    if (event.isShiftDown()) {
                        fixedTable.getSelectionModel().selectPrevious();                      
                    } else {
                        fixedTable.getSelectionModel().selectNext();
                    }
                    event.consume();
                    break;

                case ENTER:
                    return;

                case C:
                    if(event.isControlDown()){
                        copySelectionToClipboard(fixedTable) ;
                    }
                    event.consume();
                    break;

                case V:
                    if(event.isControlDown()){
                        pasteFromClipboard(fixedTable);
                    }
                    event.consume();
                    break;

                default:
                    if (fixedTable.getEditingCell() == null) {
                        if (event.getCode().isLetterKey() || event.getCode().isDigitKey()) {
                            TablePosition focusedCellPosition = fixedTable.getFocusModel().getFocusedCell();
                            fixedTable.edit(focusedCellPosition.getRow(), focusedCellPosition.getTableColumn());
                        }
                    }
                    break;
            }
        }
    });

A:

You will need to handle the selection on your own. The reason is because the methods selectPrevious() and selectNext() tries to select the previous ( or the next ) without removing the current selected row ( when you set the selection mode to be SelectionMode.MULTIPLE) , also you can't use them and just remove the previous selecting by just calling clearSelection() because this will set the selected index to -1 and then the methods selectPrevious() and selectNext() will select the last or the first row only.
Here is how you could implement the selection on your own :
// 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;
...

