我有延伸AbstractTableModel上的表模型和被用於該模型的數據庫。某些進程正在向該模型動態添加行,並在每次將行添加到數據庫時觸發fireTableRowsInserted(lastRow,lastRow)。一切工作正常,除非我爲該模型添加分揀機。在應用分類器之後,fireTableRowsInserted(lastRow,lastRow)拋出java.lang.ArrayIndexOutOfBoundsException,其中行仍然添加到模型中並顯示在GUI1上。爪哇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()對我來說是非常昂貴的。不能這樣做。