簡體   English   中英

將字符串數組中的元素添加到defaultlistmodel

[英]adding elements from string array into defaultlistmodel

我正在嘗試通過刪除聯系人來更新JList,而不是像我想要的那樣更新JL​​ist。

最初,JList看起來像這樣。

Broadcast //Not allowed to delete this element
Andy
Bobby
Chris
Brad

假設我已經使用按鈕從列表中刪除了Andy。 它應該顯示

Broadcast //Not allowed to delete this element
Bobby
Chris
Brad

而是將其顯示在JList上。

contact0
contact2
contact3
contact4

我不知道出了什么問題,我從許多資料來源中尋找。 我希望它返回實際名稱,而不是contact#。 代碼如下。

private JList<String> listContacts;
private DefaultListModel<String> model;
private String[] contactList;

model = new DefaultListModel<String>();                                                             
contactList = controller.getContacts();
for(String contact : contactList){
    model.addElement(contact);
}
listContacts = new JList<String>();                                                                  
listContacts.setModel(model);

class MyButtonListener5 implements ActionListener{
    public void actionPerformed(ActionEvent e){
        if(listContacts.getSelectedIndex() == 0){
            controller.displayMsg("Can't delete broadcast.\n");
        }
        else if(listContacts.getSelectedIndex() > 0){
            controller.displayMsg("You tried to delete " + listContacts.getSelectedValue() +".\n");
            model.remove(listContacts.getSelectedIndex());
            listContacts.setModel(model);
        }
        else{
            controller.displayMsg("No contact to delete. Please select one.\n");
        }
    }
}

這是用於contactList的getContacts。 此方法在控制器類中。 我希望這可以弄清楚為什么我會遇到麻煩。

public String[] getContacts(){
    Contact[] contacts = new Contact[5];
    String[] names = new String[5];
    for(int i = 0; i < 5; i++){
        contacts[i] = new Contact("contact" + i);
        names[i] = contacts[i].getName();
    }
    return names;
}

這是在我的聯系方式中。

private String name;
private String nickname;

public Contact(){
    name = "";
    nickname = "";
}
public Contact(String name){
    this.name = name;
}
public void setName(String name){
    this.name = name;
}
public String getName(){
    return name;
}
@Override
public String toString(){
    return this.getName();
}

我認為您可以通過重寫Contact類中的toString()方法來解決此問題。

@Override
public String toString() {
    return this.getName();
}

然后,您可以不使用.getName()返回聯系人,而直接將其添加到列表中。 我建議您看一下這個例子。

private JList listContacts;
private DefaultListModel model;
private Contact[] contactList;

model = new DefaultListModel();                                                             
contactList = controller.getContacts();
for(Contact contact : contactList){
    model.addElement(contact);
}
listContacts = new JList();                                                                  
listContacts.setModel(model);

class MyButtonListener5 implements ActionListener{
    public void actionPerformed(ActionEvent e){
        if(listContacts.getSelectedIndex() == 0){
            controller.displayMsg("Can't delete broadcast.\n");
        }
        else if(listContacts.getSelectedIndex() > 0){
            controller.displayMsg("You tried to delete " + listContacts.getSelectedValue() +".\n");
            model.remove(listContacts.getSelectedIndex());
            listContacts.setModel(model);
        }
        else{
            controller.displayMsg("No contact to delete. Please select one.\n");
        }
    }
}

和您的getContacts()方法:

public Contact[] getContacts(){
    Contact[] contacts = new Contact[5];
    contacts[0] = "Broadcast";
    contacts[1] = "Andy";
    contacts[2] = "Bobby";
    contacts[3] = "Chris";
    contacts[4] = "Brad";

    return contacts;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM