0

プログラムに2本の木があります。Iamは、JTreeのclearselection()メソッドを使用して、他のツリーの何かが選択されたときに1つのツリーの選択をクリアします。メインコードは次のようなものです:(現在の選択がトリガーされたものであるvalueChangedイベントリスナーとツリー内)

    if ( tree == tree1 ){

        tree2.clearSelection();

    } else {

        tree1.clearSelection();

    }

初めて選択したときは問題なく動作します。しかし、この後、別のツリーから選択しようとすると、valueChangedメソッドが2回呼び出されているように見えます。解決策はありますか?

4

2 に答える 2

1

この質問で私があなたに与えたコードを使用しましたか?

これには、無限ループの導入の問題を回避するためのフラグが含まれており、現在の選択イベントを処理しているときに後続の選択イベントも無視する必要があります。

ところで、これが前の質問に直接関係していることを考えると、前の投稿にコメントするだけの方が良いかもしれません。そうすれば、すべてのコンテキストが1か所に保持されます。

于 2009-11-19T09:04:52.270 に答える
0

clearSelection()はvalueChangedもトリガーするため、回避策が必要であり、フラグを追加し、trueの場合は選択をクリアしないでください。

編集。フラグを使用するのは難しいようです。代わりにMouseListenerを使用して、mouseClickedイベント内で同じコードを実行できますか?

于 2009-11-19T05:18:24.573 に答える