У меня есть модель таблицы, которая расширяет AbstractTableModel и базу данных, которая используется для этой модели. Некоторые процессы динамически добавляют строки к этой модели и запускают fireTableRowsInserted (lastRow, lastRow) каждый раз, когда строка добавляется в базу данных. Все работает нормально, если я не добавлю сортировщик к этой модели. После применения сортировщика fireTableRowsInserted (lastRow, lastRow) бросает java.lang.ArrayIndexOutOfBoundsException, когда строки все еще добавляют к модели и отображаются в GUIl.Java fireTableRowsInserted (int, int) с RowSorter
Все процессы/потоки, взаимодействующие с компонентами Swing, отправляются на EDT. Ниже приведена полная трассировка стека для этого исключения.
java.lang.ArrayIndexOutOfBoundsException: 281
at javax.swing.DefaultRowSorter.setModelToViewFromViewToModel(DefaultRowSorter.java:734)
at javax.swing.DefaultRowSorter.rowsInserted0(DefaultRowSorter.java:1063)
at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:868)
at javax.swing.JTable.notifySorter(JTable.java:4272)
at javax.swing.JTable.sortedTableChanged(JTable.java:4120)
at javax.swing.JTable.tableChanged(JTable.java:4397)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296)
at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:231)
at View.AllData.CenterSection.DataModel$1.run(DataModel.java:143)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Возможно, это может быть причина этого исключения? и потенциальные решения. Сейчас около 7-8 часов, когда я пытаюсь это понять, но ничего не нашел. Любая помощь будет ценить меня.
Заранее спасибо.
Данные, которые мне нужно отображать, очень велики, поэтому fireTableDataChanged() для меня очень дорог. Не могу с этим поделать.