如何动态添加项目到JList?

时间:2015-04-17 15:07:13

标签: java swing jlist

每当按下按钮时,我都无法将项目添加到名为JList的{​​{1}}。

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

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

lstContacts

以下是联系人类中的newContactButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Contacts contacts = new Contacts(); contacts.createContact(); } }); 方法:

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); }

2 个答案:

答案 0 :(得分:2)

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

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

  3. 阅读How to Use Lists上的Swing教程中的部分。 ListDemo示例向您展示了如何从DefaultListModel动态添加/删除项目。下载示例并修改工作示例以满足您的特定要求。在学习新概念时,请从工作代码开始。

答案 1 :(得分:2)

问题在于:

Contacts contacts = new Contacts();

contacts.createContact();

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

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