Ich habe eine Schaltfläche implementiert, die einfach einen "Kontakt" in der JList-Kontaktliste löscht. Was das Programm tun soll, ist, wenn die Schaltfläche "Broadcast" löscht, was das erste Element in der Kontaktliste ist, wird ein Fehler zurückgegeben, indem eine Display-Nachricht ausgegeben wird. Ansonsten soll es den Kontakt einfach aus der Kontaktliste entfernen.Fehler beim Umwandeln von JList in DefaultListModel
Meine Frage ist, wie lösche ich den Kontakt aus der JList mit DefaultListModel korrekt? Ich habe gesehen, dass DefaultListModel verwendet werden muss, da die remove-Funktion nicht in JList oder ListModel ist.
Was das Beispiel der Kontaktliste der Größe 4 aussehen kann:
[Broadcast]
[Andro]
[Denis]
[Micheal]
...
Dies ist der Fehler:
[java] Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
... //rest of error
Code:
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);
}
}
.. was ist Ihre Frage? Verstehst du, was die Compiler-Nachricht bedeutet? Bitte recherchiere die Dinge, bevor du hier einen Beitrag schreibst (und wenn du zu dieser Phase kommst - formuliere eine * spezifische * Frage. –