簡體   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