La questione non è delle più semplici. Una tabella non è fatta solo di righe, ma anche di colonne. Quindi dire "voglio che vengano mostrate le ultime 4 righe" non è sufficiente: ti basta che vengano mostrate le prime colonne delle ultime 4 righe (scroll orizzontale tutto a sinistra)? Vuoi visualizzare le ultime colonne delle ultime righe (scroll orizzontale tutto a destra)?

Supponiamo la prima, dovrebbe essere sufficiente questo codice (non l'ho provato):

codice:
public void addRow(TuaRiga riga) {
   ...  //   Tutto come mostrato prima
   scrollToLastRow();
}

...

private void scrollToLastRow() {
   int lastRow = tabella.getRowCount() - 1;
   Rectangle rect = tuaTabella.getCellRect(lastRow, 0, true);
   tuaTabella.scrollRectToVisible( rect );
   tuaTabella.clearSelection();
   tuaTabella.setRowSelectionInterval(lastRow, lastRow);
   tuaTabella.getModel().fireTableDataChanged();
}
Questo dovrebbe selezionare l'ultima riga e renderla visibile (forando, quindi, lo scroll del JScrollPane).


Ciao.