void (KeyEvent e) { final int column = myTableView.getEditingColumn(); final int row = myTableView.getEditingRow(); if (e.getModifiers() == 0 && (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_TAB)) { e.consume(); SwingUtilities.invokeLater(() -> { stopEditing(); int nextColumn = column < myTableView.getColumnCount() - 1 ? column + 1 : 0; int nextRow = nextColumn == 0 ? row + 1 : row; if (nextRow > myTableView.getRowCount() - 1) { if (myElements.isEmpty() || !ListTableWithButtons.this.isEmpty(myElements.get(myElements.size() - 1))) { AnActionButton addButton = ToolbarDecorator.findAddButton(myPanel); if (addButton != null) { addButton.actionPerformed(ActionUtil.createEmptyEvent()); } return; } else { nextRow = 0; } } myTableView.scrollRectToVisible(myTableView.getCellRect(nextRow, nextColumn, true)); myTableView.editCellAt(nextRow, nextColumn); }); } }