Ciao a tutti!

Ho un problema che non riesco a risolvere. Ho tre tabelle (memorizzate su un DB SQL) che l'utente può modificare a piacimento. Quando l'utente vuole inserire, ad esempio, tre righe preme tre volte il tasto Inserisci, che aggiunge una riga vuota per ogni pressione. Ora vorrei poter registrare tutti i cambiamenti fatti in queste tre nuove righe ed ho scritto una cosa simile che ovviamente non funziona:


codice:
final JTable lavTable = db.genTableLav(nome);
/* Questa è da completare */
lavTable.getModel().addTableModelListener(new TableModelListener(){
			public void tableChanged(TableModelEvent e) {
				int firstRow = e.getFirstRow();
				int lastRow = e.getLastRow();
				int index = e.getColumn();
				Object[][] changedData = new changedData[lastRow-firstRow][3];
				DefaultTableModel model = (DefaultTableModel) e.getSource();	
switch(e.getType()){ /* Come faccio a catturare i cambiamenti in un'intera riga? */
				
			
				}
}

/* Per inserire una riga faccio così */
insert.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				DefaultTableModel model = (DefaultTableModel)  prevTable.getModel();
				model.addRow(new Object[2]); /* Inserisco una riga vuota. Non lancio alcun fireTable*() perché prima la riga la inserisco vuota e poi la modifico, per questo mi serve qualcosa che ascolti i cambiamenti di una riga per intero */
				prevTable.setModel(model);
				prevTable.repaint();
			}
		});
Il codice sopra non funziona perché ogni volta che premo Inserisci, viene invocata tableChanged() e ogni volta quindi firstRow e lastRow sono uguali; invece io devo fare in modo che quando entro dentro tableChanged() firstRow valga 1 e lastRow valga 3 (facendo sempre l'esempio delle tre righe, ma possono essere anche di più). Come posso fare? Spero di essermi spiegato. Ho in mente una soluzione (cioè di impedire di aggiungere più righe) però sicuramente c'è qualcosa di più elegante.