DevFaqWhatIsANodeJa
Node とは何ですか?
Node はプレゼンテーションオブジェクトです。 Node には、アクション、プロパティ、および国際化対応している表示名があります(they are the place where the architecture meets the human) 。 Node は通常あるモデルオブジェクトをラップしており、人が読むことのできる名前、アイコンなどを備えます。 Node は NetBeans の多くの selection とユーザーインタフェースシステムの中心です。
Node は一般的なツリー構造です。 一般的な用途は、ユーザに DataObject を表示することです(ユーザのファイルを視覚的に表現するために)。 各Node には、子Node のリストを提供することができる子オブジェクトがあります。 Node は JDK の TreeNode のサブクラスではないため、ビジュアルコンポーネントではありません。 Node は JavaBeans 仕様に従っており、java.beans.FeatureDescriptorのサブクラスです。
Node は explorer view に表示されます。エクスプローラー API は、Node を利用する多くの Swing コンポーネントを提供し、ツリー、リスト、ツリーテーブルなどで、 Node とその子 Node を表示することができます。 また、プロパティシートも Explorer view です。 Node にはプロパティがあり、国際化対応している名称と共にキーと値が対になっています。
一般的に Node は表示のみを行うべきです。もしあなたがユーザと対話するオブジェクトとして、 Node クラスにたくさんの処理ロジックを記述しているなら、それはほとんどの場合誤っています。
Node は NetBeans のグローバルな選択の基点になります。 uiのタブの各コンポーネント には、「アクティブ化された Node 」があります。 システムは、どんなコンポーネントにフォーカスがあるかをグローバルに追跡します。そして、通常各コンポーネントは現在選択された Node (ユーザがクリックするなどして変更することができる)として該当する Node を提供します。
Node には、あなたのコードが実際に操作したいオブジェクトを取得する Lookup があります。あなたは決して選択された Node を直接利用せず、その Node を何らかの特定の Node サブクラスにキャストして操作します。ですが、実際のモデルオブジェクトは Node の Lookup から取得可能であるべきです。これは将来的にあなたのコードを助けます。あなたは、あなたのクライアントコードが Node の Lookup よって取得するオブジェクトと同じオブジェクトを提供する別のモジュールを利用することができます。あなたのクライアントコードを一切変更することなく、ただ必要とする Node を探すだけです。
Read about how to implement your own Nodes
