I am trying to delete multiple rows from a JTable that have been selected by the user. The code works and deletes the rows except for one row at which point it throws an ArrayOutOfBoundsException. The following is the code for the delete button.
public void mouseClicked(MouseEvent e) {
int[] rows = dataTable.getSelectedRows();
if(rows.length == 0){
JOptionPane.showMessageDialog(null, "No records are selected");
}else if(JOptionPane.showConfirmDialog(null, "Are you sure you want to permanently delete " +
rows.length + " selected record(s)") == 0){
for(int i = 0; i < rows.length; i++){
System.out.println("Value at " + rows[i] + ": " + dataModel.getValueAt(rows[i], 0));
}
for(int i = 0; i < rows.length; i++){
System.out.println("Current Row ("+ i +"): " + rows[i]);
dataModel.removeRow(rows[i]); // Throws error
}
dataTable.revalidate();
dataTable.repaint();
}
}
Code for dataModel
dataModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
StackTrace
java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.removeElementAt(Vector.java:558)
at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:462)
at com.company.fitness.DataPanel$4.mouseClicked(DataPanel.java:213)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)