L'errore me lo da in questa riga:
codice:
table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, true));
model è il DefaultTableModel(); !!!

Stavo provando quest'altra strada.... costruire una classe che mi restituisca la JTable, così ad ogni inserimento di nuovi dati ridisegno la JTable.
La JTable la ottengo però ho due problemi:
1) non mi si posiziona più all'ultima riga della JTable!!
2) non riesco ad avere più le info della riga su cui clicco con il mouse!!

Codice della classe generatrice della JTable:
codice:
package pannelli;

import grafica.RegModelTable;
import java.awt.Dimension;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import database.RegistroCassa;

public class RegistroTable extends JTable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	final DefaultTableModel model = new DefaultTableModel();
	private JTable table;	
	
	public RegistroTable(RegistroCassa registro) {
		
	Object[] columnHeaders = {"NUM","OPERAZIONE","IMPORTO","DATA","MOTIVO","CATEGORIA","SALDO","BOLLETTA"};
	String[] checkRed = registro.getRedCheck();
		final Object[][] rowData = registro.getRowData();
        int numRow = registro.getNumRow();
        
        
        System.out.println("rowData: "+rowData[1][100]);
        
		
		table = new JTable(model);
        table.setPreferredScrollableViewportSize(new Dimension(1190,632));
        table.setFillsViewportHeight(true);
        table.setColumnSelectionAllowed(false);
        table.getTableHeader().setReorderingAllowed(false); // SPOSTAMENTO DELLE COLONNE
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table.setAutoResizeMode(0); //AUTO RESIZE OFF
        TableColumn colonna = null;
        // DATI JTABLE
        for(int i=0; i<rowData.length; i++) {
        	model.addColumn("<html>"+columnHeaders[i]+"</html>");
        }
        for(int i=0; i<numRow; i++) {
        	model.addRow(new Object[] {rowData[0][i],rowData[1][i],"€ "+rowData[2][i],rowData[3][i],
        								rowData[4][i],rowData[5][i],"€ "+rowData[6][i],rowData[7][i]});
        	for(int x=0; x<model.getColumnCount(); x++) {
        		table.getColumnModel().getColumn(x).setCellRenderer(new RegModelTable(checkRed));// SETUP TABELLA
        	}
        }
    		//SETUP delle COLONNE
        for(int i=0; i<rowData.length; i++) {
        	// IMPOSTAZIONI COLONNE
        	colonna = table.getColumnModel().getColumn(i);
        	colonna.setResizable(false);
        	//(String) colonna.getIdentifier()
        	switch(i) {
	        	case 0:
	        		colonna.setPreferredWidth(35); // ID
	        	break;
	        	case 1:
	        		colonna.setPreferredWidth(85); // OPERAZIONE
	        	break;
	        	case 2:
	        		colonna.setPreferredWidth(70); // IMPORTO
	        	break;
	        	case 3:
	        		colonna.setPreferredWidth(80); // DATA
	        	break;
	        	case 4:
	        		colonna.setPreferredWidth(650); // MOTIVO
	        	break;
	        	case 5:
	        		colonna.setPreferredWidth(80); // CATEGORIA
	        	break;
	        	case 6:
	        		colonna.setPreferredWidth(70); // SALDO
	        	break;
	        	case 7:
	        		colonna.setPreferredWidth(80); // BOLLETTA
	        	break;
        	}
        }
        //====================================================================================================
        table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, true)); // POSIZIONE VERTICALE DELLA SCROLLPANE
	}
}
Questo invece la parte di codice che richiama la JTable...
codice:
public PageRegistro(RegistroCassa registro) {
		
		// SETTING DATI JTABLE===============================================================================
	final Object[][] rowData = registro.getRowData();
        table = new RegistroTable(registro);	
        
	// DATI per l'invio alla classe NewRegPage
	saldo = registro.getSaldo();
	operazione = registro.getNum();

.....

// regPan JPANEL
		JPanel regPan = new JPanel();
		regPan.setBorder(BorderFactory.createEtchedBorder());
		regPan.setLayout(new FlowLayout(FlowLayout.CENTER));
		regPan.add(new JScrollPane(table));
		table.scrollRectToVisible(table.getCellRect(table.getRowCount()-1, 0, true)); // POSIZIONE VERTICALE DELLA SCROLLPANE
		
		// ---------- AZIONI per JTable
        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
            	//Ricavo la tabella che ha prodotto l'evento
            	JTable table = (JTable)e.getSource();
            	//Calcolo la rigae colonna su cui si è fatto click
            	int rigaSelezionata = table.getSelectedRow();
            	int clickedRow = table.columnAtPoint(e.getPoint());
            	
            	Log.nor("rigaSelezionata: "+rigaSelezionata+"\nclickedRow: "+clickedRow);
            	
            	String[] infoTesto = new String[rowData.length];
            	for(int i=0; i<rowData.length; i++) {
            		infoTesto[i] = (String) table.getValueAt(rigaSelezionata,i);
    		}
            	subInfoPan.refresh(infoTesto);
        	cdLay.show(infoPan, "sub");
            }
        });

.......