Originariamente inviato da timeless
infatti l'ho pensato anche io la cosa strana e che prima popolo il mio modello , poi lo passo alla jtabel , successivamente faccio il refrash della grafica e dopo eseguo la funzione per portare a video l'ultima riga ..
Tutte queste cose che hai citato, le puoi indubbiamente fare in risposta all'evento (es. del pulsante). Ma che tu faccia qualunque add/insert sul modello o qualunque repaint() (che tra l'altro non serve .... già JTable "sa", notificato dal model, dove/come ridisegnarsi) non causano immediatamente nulla a video. Solo finito questo evento e ritornato il controllo al framework allora esso si accorgerà "ah c'è la tabella da ridisegnare" e quindi poi JTable si ridisegnerà dove necessario per mostrare la nuova riga.

Quello che potrebbe essere interessante è che dopo una add sul model, il "preferred size" della tabella rispecchia già la nuova dimensione comprensiva della nuova riga. E quindi si potrebbe sfruttare questa informazione per chiedere che venga mostrato il punto più basso possibile basandosi su questa nuova altezza.

Un'altra soluzione è registrare sul JTable un ComponentListener, che ha il componentResized(). Questo indica quando è già stato ridimensionato. Quindi in questo evento si può tranquillamente richiedere lo scroll al fondo. Unico punto negativo: vale per qualunque ridimensionamento, anche se es. si allargano le colonne della tabella, quindi andrebbe fatto un "filtro" per verificare se solo l'altezza è cambiata.