1

コマンドライン アプリケーション用の一連のノードがあり、その上に GUI を配置したいと考えています。ツリーを視覚的に表示したいので、JTree. インターフェイスを実装する独自のツリー モデルを作成しましたTreeModelが、ツリーは期待どおりにレンダリングされます。

しかし今、ノードを挿入または削除できるようにしたいと考えています。現在、挿入または削除操作を実行するたびにツリーを再描画しています。これは、特に何千ものノードがある場合はひどい解決策です。

DefaultTreeModel、必要に応じて、挿入と削除、およびツリーの更新をすべて処理します。それが自分のモデルでどのように機能するかを理解する必要があります。

カスタム ツリー モデルを使用する唯一の理由は、既存のノード オブジェクトを操作できるようにするためです。この理由は、カスタム モデルを実装するのに「十分」なのですか、それとも、デフォルトの可変ツリー ノード オブジェクトを使用する方法を探す必要がありますか?

4

1 に答える 1

3

ツリーの使用方法: データ モデルの作成で説明されているように、「TreeModelインターフェイスはあらゆる種類のオブジェクトをツリー ノードとして受け入れます」。カスタムTreeModelは、「既存の階層データ構造」を効率的に反映できます。

具体的な例として、ここここFileTreeModelで引用されている を見てください。欠けている唯一のものは配管であり、そのための指示はAPI にあります。TreeModelListenerEventListenerList

補遺: レンダリング効率に関して、 flyweight パターンJTreeを使用して、可視ノードのみをレンダリングします。あなたの意志で適切なものを発射すると、リストツリーがモデルの変更に反応できるようになります。便利なガイドです。TreeModelEventTreeModelDefaultTreeModel

于 2013-06-25T19:42:54.783 に答える