Я реализовал кнопку, которая просто удалит «контакт» в контактном листе JList. То, что программа должна делать, - это если кнопка удаляет «Broadcast», которая является первым элементом в contactList, вернет ошибку, выведя отображаемое сообщение. В противном случае предполагается просто удалить контакт из списка контактов.ошибка приведения JList в DefaultListModel
Мой вопрос: как правильно удалить контакт из JList с помощью DefaultListModel? Я видел, что 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);
}
}
.. в чем ваш вопрос? Вы понимаете, что означает сообщение компилятора? Пожалуйста, исследуйте вещи перед тем, как писать сообщение здесь (и когда вы доберетесь до этого этапа - сформируйте * конкретный вопрос *. –