2011-03-06 66 views
0

我有一個JTree,一個JTable和一個JList,顯示同一組對象,但是按不同的順序和不同的信息。如果從其中一個組件中選擇了一個項目,我想在另外兩個組件上選擇相同的對象(這意味着它們應該突出顯示)。當然,我使用Listener監視選擇事件。這是一個問題,當一個Component檢索到選定的對象時,我必須確保通過調用其上的選擇方法來選擇其他組件上的對象。這將通知其他兩個組件上的選擇偵聽器。但是這些事件中的每一個都會依次調用除本身以外的組件的選擇事件,從而導致三個組件之間出現無限循環。JTree的選擇沒有生成事件

我看到一個解決方案是使用一個布爾標誌,並如果標誌被設置在聽衆不會傳播的選擇。但是,這看起來很麻煩,不夠優雅。有沒有辦法簡單地告訴JTree,JTable和JList做出選擇,但不會觸發任何事件(如反對觸發事件,然後用布爾標誌捕獲並停止它)?

回答

1

看看SharedModelDemo。我認爲它符合你的要求。

+1

是的。謝謝。這工作。製作一個適用於Tree,Table和List的模型將會是一些工作,但這似乎比圍繞布爾值更好。 – Raymond 2011-03-08 16:26:51

0

我會用一個標誌,指示它是否是用戶的變化或內部的變化,但玉也可以選擇調用前刪除監聽器,並將它們添加後,以防止事件射擊。

+0

我不太喜歡這種方法。如果有幾個聽衆,我會不會做更多需要的工作?我不是在尋找工作。我正在尋找一個合適的設計。 – Raymond 2011-03-08 16:08:43