0
我試圖通過刪除一個聯繫人來更新JList,而不是像我想要的那樣更新JList。將字符串數組中的元素添加到defaultlistmodel
最初,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
我不知道出了什麼問題,我查了很多來源。我希望它返回實際名稱,而不是聯繫人#。代碼如下。
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();
}
如果我已經做到了,我該如何修改現有的代碼,我在這個崗位?或者我不需要? – whuang
您需要將getContact方法更改爲返回類型Contact並返回聯繫人數組。你也需要改變你的DefaultListModel我猜... 你可以發佈你的Contact()類嗎?這將是極其有益的... –
好的,我會編輯我的答案:D 請更新您的答案並添加您的聯繫人類... –