All'interno dell'azione Delete ho messo una stampa che mi dice che riga vado a stampare

codice:
deleteAct=new AbstractAction("Delete"){

		@Override
		public void actionPerformed(ActionEvent e) {
				
			int rowToDelete=(rv.getTab().getSelectedRow());	//memorizzo il numero di riga da cancellare 
			
			System.out.println("rowToDelete"+ rowToDelete);   <------
			if(rm.getSchede().size()==1){
				empty();
		}
			rm.removeSchedaAt(rowToDelete);
			rv.getLabError().setText("Contact deleted");
			
		}
		
	};
Infatti se apro la rubrica seleziono il 3 contatto e clicco delete mi stampa rowToDelete 2 (dato che per contare lui parte da 0).
Ho fatto delle prove:
1) se metto int rowToDelete=(rv.getTab().getSelectedRow()+1) mi cancella la riga sucessiva a quella che vorrei cancellare
2)se metto int rowToDelete=(rv.getTab().getSelectedRow()-1) mi cancella la riga precedente.
Quindi funziona secondo me..
Il Se non metto nulla mi da errore! Come mai?
Grazie