2011-04-10 55 views
0

我有一個JTable,裏面有一些信息。現在我想從中刪除一個指定的行,但它有例外。我如何從jtable中刪除指定的行?

我寫了下面的代碼:

jtable table = new jtable(model); 

model.setDataVector(str2, str1); 

model.fireTableRowsDeleted(row, row); 
    model.removeRow(row); 


//str2,str1 are verctor 

是什麼問題呢?

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 
    at java.util.Vector.removeElementAt(Vector.java:511) 
    at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:446) 
    at project1.SportMan.jMenuItem1ActionPerformed(SportMan.java:481) 
    at project1.SportMan.access$1000(SportMan.java:29) 
    at project1.SportMan$6.actionPerformed(SportMan.java:350) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357) 
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) 
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850) 
    at java.awt.Component.processMouseEvent(Component.java:6267) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:6032) 
    at java.awt.Container.processEvent(Container.java:2041) 
    at java.awt.Component.dispatchEventImpl(Component.java:4630) 
    at java.awt.Container.dispatchEventImpl(Container.java:2099) 
    at java.awt.Component.dispatchEvent(Component.java:4460) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
    at java.awt.Container.dispatchEventImpl(Container.java:2085) 
    at java.awt.Window.dispatchEventImpl(Window.java:2478) 
    at java.awt.Component.dispatchEvent(Component.java:4460) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
+0

可以粘貼你如何創建表以及刪除該行的代碼? – harshit 2011-04-10 20:44:48

回答

2

java.lang.ArrayIndexOutOfBoundsException: 0 >= 0是一個非常清楚的指標,表已經是空的。

+0

我確定這不是空的。 – 2011-04-10 20:49:12

+0

@mehdi - 證明它;-) – kleopatra 2011-04-10 20:53:49

+0

我可以在我的表中看到信息 – 2011-04-10 20:58:52

1

除了我的評論:model.fireSomething是而不是 soSomething的手段(並不意味着在模型外使用)。相反,調用model.removeRow(row) - 如果具體實現支持,則爲f.i. DefaultTableModel - 一切都將簡單地工作(假設該行是有效的行索引)。

附錄:吉姆是完全正確的 - stackstrace表明,該模型是空