【发布时间】:2011-02-22 17:13:24
【问题描述】:
我尝试从 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。
我做错了什么?
【问题讨论】:
-
必须从 EDT 修改 GUI 元素。是这样吗?
-
很难给出一个有用的答案,因为发布的 3 行代码并未反映异常的原因。
-
getSize 不能返回 2。如果是,则异常不会说 1 >= 0。如果 getSize 确实返回 2,则可能有另一个线程正在从同一线程中删除元素列表?
标签: java swing exception jlist