Ich versuche, mehrere Zeilen aus einer JTable zu löschen, die vom Benutzer ausgewählt wurden. Der Code funktioniert und löscht die Zeilen mit Ausnahme einer Zeile, bei der er eine ArrayOutOfBoundsException auslöst. Der folgende Code ist der Lösch-Button.Löschen von Zeilen aus JTable - Java
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 für Datenmodell
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)
Bitte Code für 'dataModel' anzeigen – SomeDude
Können Sie uns den StackTrace zeigen? – TMichelsen
Eine der SO-Antworten schlägt vor, 'removeRow (rows [i] -i);' –