1

さて、私はJavaに非常に慣れていないので、我慢してください。

Netbeans 6.8を使用して、コンポーネントを含む小さなデスクトップアプリケーションを作成していJTreeます。要件は、ツリー構造を保存およびロードできることですが、構造では、ツリーノードごとに3つの情報を許可する必要があります。ノード、一意の識別子、およびファイル名として表示されます。

もちろん、ノードがクリックされたときに3ビットすべての情報を取得できる必要もあります。

getModel()およびXMLDecoder/を使用してツリーモデルを正常に保存およびロードしましたencoderが、これはもちろんデフォルトのツリーモデルのみを保存します。

カスタムツリーモデルの作成に関するいくつかのチュートリアルに従いましたが、混乱を招き、彼らが私に言ったことを自分のプロジェクトに転送することができませんでした。もちろん、通常、サンプルアプリケーション全体を一度に作成するためです。

このようなツリーモデルが可能であると仮定して、誰かがそのようなモデルを作成する方法、そして最も重要なことJTreeに、アプリケーションにすでに存在するモデルにモデルを配置する方法(および情報を取得する方法)を説明してもらえますか?ノードがクリックされたとき-現在、選択したノードを見つけてそのテキストを取得できます)

これが不可能な場合は、同じ機能をもたらす代替方法を喜んで聞いてください。

解決策に到達したので、みんなの努力に感謝しますが、正解は最初にそれを投稿するためにアンドリューに行く必要があります!

興味のある方へ:NetbeansIDEを使用して新しいJavabeanオブジェクトを作成しました。これと通常のオブジェクトの違いに気づいたら、新しく作成したJavabeanオブジェクトをツリーノードに配置することができました。すべてをうまくするために、私の元の保存方法はまだうまく機能しています!

皆さんの努力に感謝します。

MVK

4

2 に答える 2

4

ノードとして表示されるテキスト、一意の識別子、およびファイル名。

それらをJavaBean Objectにカプセル化し、適切なレンダラーを使用します。

于 2012-06-29T14:23:05.273 に答える
1

デフォルトでは、JTree は DefaultTreeModel を使用し、次に DefaultMutableTreeNode を使用して各ノードを表します。任意のオブジェクトをノードに割り当てることができ、オブジェクトの toString() メソッドを呼び出すことでレンダリングされます。

したがって、最も簡単な解決策は、必要なすべてのデータをクラスにカプセル化し、toString() メソッドを実装して、表示したいものをすべて返すことです。おまけに、JavaBeans仕様に従ってクラスを実装すると、無料で XML シリアル化が得られます。

Swing のチュートリアル、具体的には How to use Trees を参照する必要があります。モデル、レンダラー、エディターは、ツリー、リスト、およびテーブルの処理方法を読んだ後により明確になります。

于 2012-06-29T15:09:29.827 に答える