I use this method of removing selected rows from a JTable:
int[] selectedRows = getSelectedRows();
if ( selectedRows.length != 0 )
{
for ( int i = 0; i < selectedRows.length; i++ )
{
int selectedRow = selectedRows[ i ] - i;
removeRow( selectedRow );
}
}
Because every time you remove a row, the next selected row will be one less then the previous.
Make sense?