尝试从DefaultListModel对象中删除元素

时间:2018-05-27 22:02:26

标签: java swing jlist defaultlistmodel listmodel

使用java版本9 我有一些测试代码从通过DefaultListModel传递refrence创建的列表中删除项目。 这就是我的工作。

  1. 创建一个DefaultListModel对象
  2. 通过调用addElement
  3. 为其添加8个元素(A..H)
  4. 通过调用removeElement
  5. 删除项目
  6. 创建一个Jlist将我的DefaultListModel的引用传递给它
  7. 列表框显示所有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 );      
    

1 个答案:

答案 0 :(得分:1)

如果遇到问题,请点击JavaDocs ...

DefaultListModel#removeElement

  

public boolean removeElement(Object obj)
删除   此列表中参数的第一个(最低索引)出现。

  参数:
obj - 要删除的组件

这里有趣的一点是,参数是Object,而不是索引。这意味着,使用Java的自动装箱,您实际上是在尝试删除模型中不存在的Integer(1)

相反,如果您执行philosophers.removeElement("B");

之类的操作

但是,如果我们在JavaDocs中读到更多内容,我们会发现

DefaultListModel#remove

  

public E remove(int index)
删除元素   此列表中的指定位置。返回已删除的元素   从列表中。

如果是,则抛出一个ArrayIndexOutOfBoundsException   index超出范围(索引&lt; 0 || index&gt; = size())。

     

参数:
index - 要删除的元素的索引

啊,这听起来更像你在追求

相关问题