每当按下按钮时,我都无法将项目添加到名为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);
}
?
答案 0 :(得分:2)
不要创建ArrayList
Contacts
。所有Contact
数据都应存储在ListModel
。
因此,当您点击按钮时,您只需创建Contact
并将Contact
添加到DefaultListModel
。但是,您的代码没有多大意义,因为您只是创建一个空的联系人。我希望Contact
有一个名字或者什么。所以你真正要做的就是有一个文本字段,用户可以输入一个名字然后当你点击按钮时使用名称数据创建一个Contact
,然后将Contact
添加到列表中
阅读How to Use Lists上的Swing教程中的部分。 ListDemo
示例向您展示了如何从DefaultListModel
动态添加/删除项目。下载示例并修改工作示例以满足您的特定要求。在学习新概念时,请从工作代码开始。
答案 1 :(得分:2)
问题在于:
Contacts contacts = new Contacts();
contacts.createContact();
每次单击按钮时都会创建一个新的联系人对象,但JList
没有对Contacts
对象的引用。我不知道联系人对象是如何定义的,但您应该确保要添加联系人的对象引用DefaultListModel
。
我看到的另一个问题(但不会导致您发布的问题)是您调用new DefaultListModel()
,但列表模型是参数化类型。您可能想要致电new DefaultListModel<String>()
。