繁体   English   中英

JList 添加和删除项目 (Netbeans)

[英]JList adding and removing items (Netbeans)

我正在尝试从我的 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:

}

我尝试了很多东西,但它们不起作用! 有人可以帮我吗?

谢谢!

您将列表的模型设置为AbstractListModel 不能将模型转换为DefaultListModel 尝试这样做会给你一个ClassCastException所以将模型设置为DefaultListModel

jList1.setModel(new DefaultListModel());

而且您可能希望使用DefaultListModel#addElement(element)而不是每次都将元素添加到相同的索引中,使用add(2, element)

这就是我声明 jList 的方式:

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

然后,您可以阅读 Swing 教程中关于如何使用列表的部分,作为一个工作示例,该示例通过使用“雇用”和“触发”按钮完全满足您的要求。

为了在 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM