1

複数の を (すべて非常に類似したコンテンツを持つ) 選択したノードを同期させたいと思いJTreeます (同じノードが各ツリーに存在する場合)。

現時点では、各ツリーに a を追加し、他のTreeSelectionListenerツリーを呼び出すことでこれを行っています (パスが含まれていない場合)。setSelectedPathgetSelectedPaths

ただし、これが無限のサイクルにつながり、各ツリーが異なるノードを繰り返し選択しているのを見てきました(これを再現する方法はわかりませんが、ノードをドラッグするときに見ました)。

ツリー選択リスナーをトリガーせずに選択したパスを設定する方法はないようです。リスナーを削除しようとする道をたどりたくありません。

ツリー間で を共有する可能性を検討していTreeSelectionModelますが、 のサイズを考えると、これは大変な作業のように見えますDefaultTreeSelectionModel

同じ結果を達成する他の方法はありますか?

4

1 に答える 1

2

フラグ isAPI を追加します。プログラムでツリー内のパスを選択するときにフラグを設定し、パスが設定された後にフラグをリセットします。

リスナーでは、isAPI==true かどうかを確認し、リスナーから戻ります。

于 2012-12-18T06:32:06.870 に答える