JTree実際にユーザーに表示されている間だけ聞く、TreeModelまたは少なくとも対応するものが破棄されるとすぐに登録を解除するにはどうすればよいJFrameですか?
私が見る限り、 aJTreeがそのモデルから自身を登録解除する唯一のケースは、( を使用して) 新しいモデルを渡した場合ですsetModel(…)。
これにより、モデルが別の場所から参照されている場合、ツリーがガベージ コレクションされません。例:ファイル システム ツリーのモデルを常に最新の状態にするために、TreeModelを使用してを実装しました。WatchServiceモデルのリスナーが 1 つであっても、WatchServiceファイル システムの変更についてモデルに通知し続ける必要があるため、ガベージ コレクションを実行することはできません。そのため、JTreeが表示されなくなったとしても、 から更新を取得する必要があるモデルによって引き続きメモリに保持されますがWatchService、これはもはや必要ありません。
JTreeモデルへの登録と登録解除を行う新しいクラス拡張を作成するのが最善の方法だと思います。その場合、コンポーネントが表示または破棄されるときにどのメソッドが呼び出されますか? おそらくaddNotify()そしてremoveNotify()良い候補ですか?