从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.
我做错了什么?
答
阅读JList API,并按照“如何使用列表”的Swing教程的链接找到执行此操作的工作示例。
然后比较你的代码和工作代码,看看有什么不同。
我们不能根据几行代码告诉你问题。
答
我会做的事情是这样的,如下所示:
final int index = mylist.getSelectedIndex();
if (index >= 0) {
((DefaultListModel) mylist.getModel()).removeElementAt(index);
}
你不需要再重新设置一次的ListModel数据已被删除。
修改GUI元素必须从EDT完成。是这样吗? – Jayan 2011-02-22 17:23:06