Java JTree パネルを実装しています。このパネルには、ツリー状の一連のデータ構造 (コンポジットのリストのリスト - 異なるクラス) から構築された TreeModel が保持されます。これらのデータ構造は、定義した一連のインターフェイスに基づいて、外部の jar 実装から取得します。
ツリーノードには、チェックされたノードとすべての子ノードが「アクティブ」になること、つまり、ノードによって表されるオブジェクトがデータベースからデータを取得するなど、何かを行う必要があることを示すために、ユーザーがチェックできるチェックボックスが含まれています。
ツリーノードは、それらを「アクティブ化」せずに、つまりチェックボックスをオンにせずに選択することもできます。
それに加えて、プログラムの他の部分もデータモデル オブジェクトのアクティブ化状態を切り替える場合があります。したがって、ツリーモデルが構築されるデータ モデルは、アクティブ化状態のソースです。これは、チェックボックスを動的に (チェックを外して) ツリービューに反映する必要があります。
さて、この全体をどのように実装しますか?誰がどのような変更を聞く必要がありますか?
これで、ノード内のすべてのクラスが、アクティベーション フィールドを保持する抽象クラスから拡張されました。これが真のデータソースです。このフィールドが変更されると、サブスクライブしているすべてのリスナー (EventListener) に通知する必要があります。これには、チェックボックスが含まれます。
デフォルトの TreeSelectionModel に基づいているが、子/親をチェックする必要があるかどうかをチェックする機能で拡張された TreeSelectionModel もあります。
私の質問はあまり明確ではないかもしれませんが、この複雑なコードもそうです。お役に立てれば幸いです。