使用java版本9 我有一些测试代码从通过DefaultListModel传递refrence创建的列表中删除项目。 这就是我的工作。
列表框显示所有8个项目,没有删除任何内容。 代码
philosophers = new DefaultListModel<String>();
philosophers.addElement( "A" );
philosophers.addElement( "B" );
philosophers.addElement( "C" );
philosophers.addElement( "D" );
philosophers.addElement( "E" );
philosophers.addElement( "F" );
philosophers.addElement( "G" );
philosophers.addElement( "H" );
philosophers.removeElement(1);
lista = new JList<String>( philosophers );
答案 0 :(得分:1)
如果遇到问题,请点击JavaDocs ...
DefaultListModel#removeElement
public boolean removeElement(Object obj)删除 此列表中参数的第一个(最低索引)出现。
参数:
obj - 要删除的组件
这里有趣的一点是,参数是Object
,而不是索引。这意味着,使用Java的自动装箱,您实际上是在尝试删除模型中不存在的Integer(1)
。
相反,如果您执行philosophers.removeElement("B");
但是,如果我们在JavaDocs中读到更多内容,我们会发现
public E remove(int index)删除元素 此列表中的指定位置。返回已删除的元素 从列表中。
如果是,则抛出一个ArrayIndexOutOfBoundsException index超出范围(索引&lt; 0 || index&gt; = size())。
参数:
index - 要删除的元素的索引
啊,这听起来更像你在追求