void (T newElement) { myTableView.stopEditing(); setModified(); SwingUtilities.invokeLater(() -> { if (myElements.isEmpty() || !isEmpty(myElements.get(myElements.size() - 1))) { myElements.add(newElement); myTableView.getTableViewModel().setItems(myElements); } myTableView.scrollRectToVisible(myTableView.getCellRect(myElements.size() - 1, 0, true)); if (shouldEditRowOnCreation()) { myTableView.getComponent().editCellAt(myElements.size() - 1, 0); } myTableView.getComponent().revalidate(); myTableView.getComponent().repaint(); }); }