JList添加和删除项目(Netbeans)

时间:2014-05-20 18:54:19

标签: java swing user-interface netbeans jlist

我试图在我的jList(jList1)中添加和删除项目,但它不起作用。 我已经在stackoverflow上搜索了同样问题的其他人,但是当他们的问题解决后,我不断收到错误。 所以这就是我声明jList的方式:

jList1.setModel(new javax.swing.AbstractListModel() {
        String [] strings = lijstItems;
        public int getSize() {
            return strings.length;
        }
        public Object getElementAt (int i) {
            return strings[i];
        }
    });

所以现在我做了这些按钮来添加和删除列表中的项目:

private void addHostActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:

    DefaultListModel model = (DefaultListModel) jList1.getModel();
    model.add(2, "item");
    // THIS DOES NOT WORK...

}

private void deleteHostActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here:

}

我尝试了很多东西,但他们没有工作! 有人可以帮帮我吗?

谢谢!

3 个答案:

答案 0 :(得分:6)

您将列表的模型设置为AbstractListModel。您无法将模型投射到DefaultListModel。尝试这样做会给你ClassCastException所以请将模型设置为DefaultListModel

jList1.setModel(new DefaultListModel());

您可能希望使用DefaultListModel#addElement(element),而不是每次都使用add(2, element)

将元素添加到相同的索引

答案 1 :(得分:1)

  

这就是我如何声明jList:

为什么要创建自定义ListModel?只需使用DefaultListModel。您无需创建自定义模型来简单地存储String数据。

然后,您可以阅读How to Use Lists上的Swing教程中的部分,找到一个可以使用“Hire”和“Fire”按钮完成您想要的工作示例。

答案 2 :(得分:0)

为了将现有项目保留在JList中并添加新项目,我必须获取模型ListModel,然后将项目添加到DefaultListModel,因为ListModel没有addElement方法。这就是我的实现方式:

   DefaultListModel<String> model = new  DefaultListModel<String>();
   ListModel model2 = jList.getModel();
   for (int i=0; i< model2.getSize();i++){
        model.addElement(model2.getElementAt(i).toString());              
        }
   model.addElement("new element");
   jList.setModel(model);