2011-02-22 49 views
0

刪除元素我嘗試的jList刪除選定的元素,並獲得例外:從JList的

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 0 
     at java.util.Vector.elementAt(Vector.java:447) 
     at javax.swing.DefaultListModel.remove(DefaultListModel.java:493) 
     at gui.Back.jButton2ActionPerformed(Back.java:410) 
     at gui.Back.access$300(Back.java:9) 
     at gui.Back$5.actionPerformed(Back.java:146) 

我的代碼:

DefaultListModel dlm = (DefaultListModel) jList1.getModel(); 
//System.out.println(dlm.getSize()); 
dlm.remove(jList1.getSelectedIndex()); //removeElementAt(int i) don't work too 
jList1.setModel(dlm); 

這很奇怪,因爲dlm.getSize();返回2.

我做錯了什麼?

+0

修改GUI元素必須從EDT完成。是這樣嗎? – Jayan 2011-02-22 17:23:06

回答

1

閱讀JList API,並按照「如何使用列表」的Swing教程的鏈接找到執行此操作的工作示例。

然後比較你的代碼和工作代碼,看看有什麼不同。

我們不能根據幾行代碼告訴你問題。

2

我會做的事情是這樣的,如下所示:

final int index = mylist.getSelectedIndex();

if (index >= 0) {
    ((DefaultListModel) mylist.getModel()).removeElementAt(index);
}

你不需要再重新設置一次的ListModel數據已被刪除。