[英]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.