0

JTree jtreeマウスリスナーが接続されています。ユーザーがJtreeコンポーネントノードをクリックすると、行整数を取得します

 jtree.getRowForLocation(evt.getX(), evt.getY());

問題は、展開されている jtree ノードがある場合と折りたたまれている場合で、返される行整数が異なることです。

混乱がないように、クリックされた各 jtree ノードの一意で絶対的な ID を取得する方法が必要です。

Jtree コンポーネントにデータを追加する方法はありますか?

それ以外の場合は、ノードが展開されたときにリッスンし、上記の関数から返された行を再計算する方法が必要です....

4

2 に答える 2

1

現在のアプローチでは、ノードを識別するためにツリー ビューの状態に依存しています。ただし、ご覧のとおり、ビューの状態は変更される可能性があります。変更されないのは、ビューの基礎となるツリー モデルです。

各ノードに一意の ID が必要な場合は、これをツリー モデルの各ツリー ノードに直接追加する必要があります。マウス リスナーでは、クリックしたノードを検出し、その一意の ID にアクセスできます。

于 2011-05-28T22:31:52.640 に答える
1

パスはノードを一意に識別するためgetPathForLocation、パスを提供しますが、それはTreePathオブジェクトであるため、ID を整数で表す必要がある場合は、TreePaths を整数に変換するメソッドを作成する必要があります。

于 2011-05-28T22:37:08.673 に答える