2016-06-07 9 views
0

내 목록에서 오래된 요소를 지우는 데 문제가 있습니다. clear()removeAllElements()removeAll()을 사용해 보았지만 해결할 수있는 것은 아닙니다.JList가 지워지지 않습니다.

d1 우리의 프로그램에서 사용할 수있는 모든 장치를 포함하는 ArrayList입니다 :

는 조금 더 상황을 이해하는 데 도움이.

availList2availList3DefaultListModel을 사용하고 있습니다.

사용자가 적절한 텍스트 파일에서 제품을로드 할 때 두 번째로 입력하면 Google GUI에 이미 나열된 제품이 원본 텍스트 파일에있는 제품으로 덮어 쓰게 만들려고했습니다. 그러나 우리는 d1 (ArrayList)과 JList에서 clear() 메서드를 사용했지만 제품의 중복을 가져 왔습니다.

유용한 팁이나 가능한 원인을 알려주세요. 대단히 감사드립니다. 목록은 다음 사라지지 않으면

if(ev.getSource() == load_availables) { 
    int returnVal = chooser.showOpenDialog(mainApp.this); 

    if(returnVal == JFileChooser.APPROVE_OPTION) { 
     d1.returnDevices().removeAll(d1.returnDevices()); 
     availList2.clear(); 
     availList3.clear(); 
     //availList2.removeAllElements(); 
     //availList3.removeAllElements(); 
     File file = chooser.getSelectedFile(); 
     read.ReadDevices(file); 
     for(int i = 0; i < read.Size(); i++) { 
      d1.add_AvailableDevices(read.get(i)); 
     } 

    } 
} 

답변

1

나는 당신이 clear() 메소드를 호출 할 때 JList에서 사용하고있는 DefaultListModel에 대한 적절한 기준이없는 제안.

스윙 튜토리얼의 섹션을 How to Use Lists에서 읽어보십시오.

ListDemo 코드를 다운로드하여 사용하십시오. DefaultListModel에있는 clear() 메소드를 사용하여 "화재"버튼을 변경하면 필요한 모든 조치를 스스로에게 알릴 수 있습니다.

코드가 작동하면 코드가 ListDemo 작동 버전과 다른 점을 파악합니다.