List<TableRowData> rows = getRows();
for(int i=0;i<rows.size();i++) {
if(rows.get(i).get("ISSELECTED")!=null){
TableRowData up = rows.get(i);
TableRowData down = rows.get(i-1);
rows.set(i-1, up);
rows.set(i, down);
}
}
DefaultTableModel model=(DefaultTableModel)this.getModel();
model.fireTableDataChanged();数据在TableRowData中,此方法可以实现上移,可是移动几次以后i会越界;求高手帮我解决下啊报的错如下:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.get(Unknown Source)
at com.regaltec.swing.table.JCheckBoxTable.upset(JCheckBoxTable.java:109)
at test.DbTreeTest.up(DbTreeTest.java:122)
at test.DbTreeTest.access$0(DbTreeTest.java:121)
at test.DbTreeTest$4.mouseClicked(DbTreeTest.java:195)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

解决方案 »

  1.   

    我好象找到原因了:
    当第一次选择某条记录上移以后(假设为n;n<i;上移后为:n-1),
    其后你再选择其他记录(假设为m;m<i)进行上移操作时(上移后变为:m-1),
    但是,此时的n仍有效,
    即,你把m上移一位变为m-1时,第一次选择的记录则为n-2了
    当n=0时则产生了上述错误错误原因是找到了,但是新的问题出来了
    如何在n-1以后把此时的n-1所在数据的checkbox置为空呢??
    有熟悉的朋友赶紧帮忙啊~~~~~~~
    谢谢~~~~~~~~
      

  2.   

    刚刚又试了一下:
       把checkbox置为空了;
    但是n仍没释放,
       所以现在问题是如果在n-1以后把n释放.........