2011-10-27 4 views
3

listModel의 변경 내용을 수신 대기해야하는 인터페이스를 이해하는 데 문제가 있습니다. 나는 그것이 ListDataListener라고 생각했지만, 그 안에있는 메소드를 이해할 수는 없다. 거기에 3 가지 방법은이 일이 내가 원하는 한 것 같다 그러나 나는 설명을 이해할 수 없다 :JList 모델에 변경 사항을 등록하는 방법은 무엇입니까?

contentsChanged(ListDataEvent e) 
     Sent when the contents of the list has changed in a way that's too complex to characterize with the previous methods. 

그것은 "너무 복잡"에 의해 무엇을 의미 하는가를? 그리고 "이전 방법으로 특성을 매김"? 글쎄, 모든게 무슨 뜻이야? 이게 내가 원하는 인터페이스인가?

답변

2

예, 올바른 수신기입니다.

이 문은 목록 내용에 대한 모든 가능한 변경을 다루는보다 일반적인 방법이라는 것을 의미합니다. 특정 이벤트가 발생할 때 다른 것들 (intervalAddedintervalRemoved)을 사용해야합니다.

제 연습에서는 항상 테이블 리스너와 함께 가장 일반적인 것을 사용하게 될 것입니다. (특히 큰 목록과 함께) 최적화하는 데 사용 된 것으로 생각됩니다.

이 청취자에 대한 자습서는 here에서 찾을 수 있습니다.

+0

모델에 화재 이벤트를 추가해야합니까? 그렇다면 어디에서? 감사! – Nacht

3

ListModel은 청취자에게 ListDataListener 이벤트를 전달합니다. 가능한 경우 자세한 목록 모델에서 intervalAddedintervalRemoved 메서드를 호출하는 것이 효율적입니다. 목록 모델의 수신기 (이 경우 JList)는 이러한 자세한 변경 사항을 사용하여 시각적 구성 요소를 최소한으로 변경할 수 있습니다 (예 : intervalAdded의 경우 전체 목록을 다시 그리는 대신 새 행을 추가 할 수 있음).

그러나 일부 변경은 너무 복잡하여 방금 추가 및 제거 된 것처럼 설명 할 수 없습니다. 이 경우 목록 모델에는 contentsChanged을 호출 할 수있는 옵션이 있습니다. JListcontentsChanged으로 표시되면 목록 모델에서 전체 목록이 다시 채취됩니다.

관련 문제