从JList的

问题描述:

删除元素我尝试的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

阅读JList API,并按照“如何使用列表”的Swing教程的链接找到执行此操作的工作示例。

然后比较你的代码和工作代码,看看有什么不同。

我们不能根据几行代码告诉你问题。

我会做的事情是这样的,如下所示:

final int index = mylist.getSelectedIndex();

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

你不需要再重新设置一次的ListModel数据已被删除。