[英]How to dynamically add items to a JList?
每当按下按钮时,我都无法将项目添加到名为lstContacts
的JList
中。
当我按下我的新联系人按钮时,应该向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
?
不要创建Contacts
的ArrayList
。 所有Contact
数据都应存储在ListModel
。
因此,当您单击按钮时,您要做的就是创建一个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.