我已經實現了一個按鈕,它將簡單地刪除JList contactList中的「contact」。程序應該做的是,如果按鈕刪除「Broadcast」(這是contactList中的第一個元素),將通過輸出顯示消息返回錯誤。否則,它應該只是從聯繫人列表中刪除聯繫人。錯誤將JList轉換爲DefaultListModel
我的問題是如何正確使用DefaultListModel從JList中刪除聯繫人?我看到需要使用DefaultListModel,因爲remove函數不在JList或ListModel中。
大小爲4的例子中的聯繫人列表可能是什麼樣子:
[Broadcast]
[Andro]
[Denis]
[Micheal]
...
這是錯誤:
[java] Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
... //rest of error
代碼:
private JList<String> listContacts;
//constructor:
listContacts = new JList<String>(controller.getContacts());
//gets contact list from controller class which gets contact list from client class.
listContacts.setModel(new DefaultListModel());
JButton deleteUser = new JButton("Delete User");
menuPanel.add(deleteUser,BorderLayout.EAST);
deleteUser.addActionListener(new MyButtonListener5());
class MyButtonListener5 implements ActionListener{
public void actionPerformed(ActionEvent e){
DefaultListModel<String> list = (DefaultListModel)(listContacts.getModel());
String contact = listContacts.getSelectedValue();
int j = -1;
for(int i = list.getSize()-1; i >= 0; i--){
if(list.getElementAt(i).equals("Broadcast")) {
controller.displayMsg("[ERROR] You cannot delete broadcast\n");
}
else if(list.getElementAt(i).equals(contact)){
j = i;
}
}
if(j != -1){
list.remove(j);
}
}
..你的問題是什麼?你知道編譯器消息的含義嗎?請在這裏寫一篇文章之前研究一下(當你到達那個階段 - 形成一個*特定*問題。 –