TableModel - ваш друг: реализуйте метод setValueAt, чтобы добавить строку после установки значения. Вот пример для этого путем создания подкласса DefaultTableModel:
DefaultTableModel model = new DefaultTableModel(1, 3) {
/**
* @inherited <p>
*/
@Override
public void setValueAt(Object aValue, int row, int column) {
super.setValueAt(aValue, row, column);
if (shouldAddRow(row, column)) {
addRow(new Object[] {});
}
}
private boolean shouldAddRow(int lastEditedRow, int lastEditedColumn) {
// implement your logic here
return lastEditedRow == getRowCount() -1;
}
};