2011-03-06 4 views
0

JTree, JTable, JList 등의 객체 세트를 표시 합니다만, 다른 순서로 다른 정보를 표시합니다. 구성 요소 중 하나에서 항목을 선택한 경우 다른 두 구성 요소에서 같은 개체를 선택하려고합니다. 즉 강조 표시해야합니다. 당연히 Listener를 사용하여 선택 이벤트를 모니터합니다. 다음은 문제입니다. Component가 선택된 객체를 가져올 때, 그 객체에 대한 선택 메소드를 호출하여 다른 구성 요소에서 객체가 선택되어 있는지 확인해야합니다. 그러면 다른 두 구성 요소의 선택 수신기에 알립니다. 그러나 각 이벤트는 차례로 자체가 아닌 다른 구성 요소에서 선택 이벤트를 호출하므로 세 구성 요소간에 무한 루프가 발생합니다.JTree는 이벤트를 생성하지 않고 선택합니다.

하나의 해결책은 부울 플래그를 사용하고 플래그가 설정된 경우 리스너가 선택 항목을 전파하지 않도록하는 것입니다. 그러나 이것은 성 가시고 우아하지 않습니다. JTree, JTable 및 JList에 선택 만하도록 지시하고 이벤트를 발생시키지 않도록 지시하는 방법이 있습니까 (이벤트를 시작한 다음 부울 플래그로 catch 및 중지하는 것에 반대).

답변

1

SharedModelDemo을 살펴보십시오. 나는 그것이 당신이 찾고있는 것을한다고 생각합니다.

+1

예. 고맙습니다. 이 작동합니다. 트리, 테이블 및 목록에 대해 동시에 작동하는 모델을 만드는 작업이 될 것입니다. 그러나 이것이 불리언 값을 유지하는 것보다 낫습니다. – Raymond

0

사용자 변경 또는 내부 변경 여부를 나타내는 플래그를 사용하지만 선택 호출 전에 리스너를 제거하고 이후에 추가하여 이벤트 발생을 방지 할 수도 있습니다.

+0

나는이 접근법을 정말로 좋아하지 않는다. 여러 명의 청취자가있는 경우 필요한 작업을 더 많이 수행하지 않겠습니까? 나는 주변에서 일거리를 찾고 있지 않다. 나는 적절한 디자인을 찾고 있습니다. – Raymond

관련 문제