TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132

Fohnbit

Top Contributor
Hallo!

Mit einem kleinen Tool lade ich von einem Excel file Benutzerdaten in eine Tabelle um diese nachzubearbeiten. Heute erhalte ich folgenden Fehler:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 132
    at javax.swing.DefaultRowSorter.setModelToViewFromViewToModel(Unknown Source)
    at javax.swing.DefaultRowSorter.rowsInserted0(Unknown Source)
    at javax.swing.DefaultRowSorter.rowsInserted(Unknown Source)
    at javax.swing.JTable.notifySorter(Unknown Source)
    at javax.swing.JTable.sortedTableChanged(Unknown Source)
    at javax.swing.JTable.tableChanged(Unknown Source)

Der Code wo der Fehler auftritt:
Java:
    public void addUser(User user) {
        if (user.device == null)
            user.device = "";

        int index = UserCreator.users.user.size();
        UserCreator.users.user.add(user);

        // Jetzt werden alle Listeners benachrichtigt

        // Zuerst ein Event, "neue Row an der Stelle index" herstellen
        TableModelEvent e = new TableModelEvent(this, index, index, TableModelEvent.ALL_COLUMNS,
                TableModelEvent.INSERT);

        // Nun das Event verschicken
        for (int i = 0, n = listeners.size(); i < n; i++) {
            System.out.println(i);
            System.out.println(((TableModelListener) listeners.get(i)));
            ((TableModelListener) listeners.get(i)).tableChanged(e);
        }

    }

Hier schmeißt er den Fehler:
Java:
((TableModelListener) listeners.get(i)).tableChanged(e);

Weder die listeners sind null, noch der Wert e. Komm da nicht so recht weiter. Debug infos sind:
Code:
listeners:

[javax.swing.JTable[,0,0,1119x2112,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_ALL_COLUMNS,cellSelectionEnabled=true,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=122,g=138,b=153],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],selectionForeground=sun.swing.PrintColorUIResource[r=51,g=51,b=51],showHorizontalLines=true,showVerticalLines=true]]


1704881906021.png

Kann sich jemand erklären, warum bzw. wo ist "OutOfBounds" bin?

Danke!
 
Irgendwas passt da doch nicht zusammen. Du zeigst den Code einer addUser Methode aber im Stacktrace kommt das nicht vor.

Daher wäre es wichtig, einmal den ganzen Stacktrace zu sehen und dann auch wirklich den Code, der die Exception verursacht.
 
Hallo!

Sorry, die Exception wird hier erzeugt:
Java:
((TableModelListener) listeners.get(i)).tableChanged(e);

Definiert wurde es so:
Java:
private Vector<TableModelListener> listeners = new Vector<TableModelListener>();

Die Methode addUser meine ich, ist hier nicht relevant, oder?

Mir ist nur nicht klar, wo ich den OutOfBounds bekomme.
Ich meine aber das ich die Java Version geändert hatte ... schätze das wird die Ursache sein?

Wie kann ich euch weitere Infos liefern?
 
ich habe nun nochmal in Eclipse die Java Version von jdk1.8 auf Openjdk 19 und wieder zurück auf jdk1.8 geändert. Projekt wurde immer neu kompiliert ... nun klappt es. Keine Ahnung warum. Hab am Code nichts geändert
 

Zurück
Oben