【问题标题】:Trying to remove a Element from a DefaultListModel object尝试从 DefaultListModel 对象中删除元素
【发布时间】:2018-05-27 22:02:25
【问题描述】:

使用 Java 版本 9 我有一些测试代码可以从通过将引用传递给 DefaultListModel 创建的列表中删除一个项目。 我就是这样做的。

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

【问题讨论】:

    标签: java swing jlist defaultlistmodel listmodel


    【解决方案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 如果 索引超出范围(索引 = size())。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2014-05-05
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2011-10-06
      相关资源
      最近更新 更多