繁体   English   中英

如何动态地将项目添加到 JList?

[英]How to dynamically add items to a JList?

每当按下按钮时,我都无法将项目添加到名为lstContactsJList中。

当我按下我的新联系人按钮时,应该向lstContacts添加一行,但是当我按下按钮时没有任何反应。

这是我的新联系人按钮的动作侦听器:

newContactButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            Contacts contacts = new Contacts();

            contacts.createContact();
        }
    });

这是我在联系人 class 中的createContact方法:

ArrayList<String> contactsList = new ArrayList<String>();
public void createContact() {
    ContactsDB database = new ContactsDB();
    System.out.println("new contact");
    contactsList.add("New Contact");
    listModel.addElement("New Contact");
}

最后是我的createCustomUIComponent()方法:

private void createUIComponents() {
    // TODO: place custom component creation code here
    listModel = new DefaultListModel();
    lstContacts = new JList<String>(listModel);
}

为什么新联系人没有添加到我的JList

  1. 不要创建ContactsArrayList 所有Contact数据都应存储在ListModel

  2. 因此,当您单击按钮时,您要做的就是创建一个Contact并将该Contact添加到DefaultListModel 但是,您的代码没有多大意义,因为您只是在创建一个空的Contact。 我希望Contact有名字或其他名称。 因此,您真正想要做的是有一个文本字段,用户可以输入一个名称,然后单击按钮时,使用名称数据创建一个Contact ,然后将Contact添加到列表中。

阅读Swing教程中有关如何使用列表的部分 ListDemo示例向您展示如何从DefaultListModel动态添加/删除项目。 下载示例并修改工作示例以满足您的特定要求。 学习新概念时,请先从可用代码开始。

问题在这里:

Contacts contacts = new Contacts();

contacts.createContact();

每次单击按钮都在创建一个新的联系人对象,但是JList没有对Contacts对象的引用。 我不知道联系人对象的定义方式,但是您应该确保要添加联系人的对象具有对DefaultListModel引用。

我看到的另一个问题(但不是引起您发布的问题)是您调用new DefaultListModel() ,但是列表模型是参数化类型。 您可能要调用new DefaultListModel<String>()

首先你必须有一个新的默认ListView

 DefaultListModel listModel = new DefaultListModel();

Thenm 使用此列表构建您的JList

 JList jList = new JList(listModel);

任何时候你想为你考虑的每个动作改变你的列表,在你的 jList 上调用addElement

listModel.addElement("This is a test contact");

暂无
暂无

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

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