JList contactList의 "연락처"를 삭제하는 버튼을 구현했습니다. 프로그램이하는 일은 contactList의 첫 번째 요소 인 "Broadcast"를 삭제하고 표시 메시지를 출력하여 오류를 반환하는 경우입니다. 그렇지 않으면 연락처 목록에서 연락처를 제거하기 만하면됩니다.JList를 DefaultListModel로 캐스팅하는 중 오류가 발생했습니다.
제 질문은 DefaultListModel을 사용하여 JList에서 연락처를 올바르게 삭제하는 방법입니까? remove 함수가 JList 나 ListModel에 없으므로 DefaultListModel을 사용해야한다는 것을 알았습니다.
크기 4의 예를 들어 연락처 목록처럼 보일 수 있습니다 무엇 :
[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);
}
}
.. 무엇이 당신의 질문입니까? 컴파일러 메시지가 의미하는 것을 이해합니까? 여기에 글을 쓰기 전에 연구 해주세요. (그리고 그 단계에 이르면 * 특정 * 질문을하십시오.) –