Exception when adding row on JTable:
java.lang.IndexOutOfBoundsException: Index 21 out of bounds for length 21
at jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)
at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)
at jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)
at java.util.Objects.checkIndex(Objects.java:385)
at java.util.ArrayList.get(ArrayList.java:427)
at net.coderazzi.filters.gui.AdaptiveChoicesHandler$AdaptiveChoicesSupport.include(AdaptiveChoicesHandler.java:493)
at javax.swing.DefaultRowSorter.include(DefaultRowSorter.java:942)
at javax.swing.DefaultRowSorter.rowsInserted0(DefaultRowSorter.java:1054)
at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:879)
at org.jdesktop.swingx.sort.DefaultSortController.rowsInserted(DefaultSortController.java:404)
at javax.swing.JTable.notifySorter(JTable.java:4338)
at javax.swing.JTable.sortedTableChanged(JTable.java:4186)
at javax.swing.JTable.tableChanged(JTable.java:4463)
at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1561)
at org.jdesktop.swingbinding.JTableBinding$BindingTableModel.fireTableModelEvent(JTableBinding.java:832)
at org.jdesktop.swingbinding.JTableBinding$BindingTableModel.added(JTableBinding.java:791)
at org.jdesktop.swingbinding.impl.ListBindingManager.listElementsAdded(ListBindingManager.java:123)
at io.tlf.ow.fob.manager.ui.beans.SwingDeepObservableList.lambda$add$1(SwingDeepObservableList.java:76)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:714)
at java.security.AccessController.doPrivileged(AccessController.java:400)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
This is because some table models run the registered listeners in the order they were registered instead of the reverse order, so net.coderazzi.filters.gui.AdaptiveChoicesHandler$AdaptiveChoicesSupport.rowsAdded(AdaptiveChoicesHandler.java:257) is called second, not first.
This is from the javax.swing.table.AbstractTableModel
public void fireTableRowsInserted(int firstRow, int lastRow) {
fireTableChanged(new TableModelEvent(this, firstRow, lastRow,
TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT));
}
This is from org.jdesktop.swingbinding.BindingTableModel
private void fireTableModelEvent(TableModelEvent e) {
for(TableModelListener listener : this.listeners) {
listener.tableChanged(e);
}
}
Exception when adding row on JTable:
This is because some table models run the registered listeners in the order they were registered instead of the reverse order, so
net.coderazzi.filters.gui.AdaptiveChoicesHandler$AdaptiveChoicesSupport.rowsAdded(AdaptiveChoicesHandler.java:257)is called second, not first.This is from the
javax.swing.table.AbstractTableModelThis is from
org.jdesktop.swingbinding.BindingTableModel