簡単なモジュールの作成
それでは、モジュールを作成してみましょう。今回は、ウィンドウを表示してボタンを押したらメッセージを表示する簡単なモジュールを作成します。
プロジェクト
NetBeansモジュールの作成は、まずモジュールプロジェクトの作成から始まります。
メインメニューの[ファイル]-[新規プロジェクト]を選択して、[新規プロジェクト]ダイアログを開いてください。
[新規プロジェクト]では[カテゴリ]に[NetBeansプラグインモジュール]を選択して、[プロジェクト]に[モジュールプロジェクト]を選択し、[次へ]ボタンを押してください。
名前などを入力する画面になります。ここでは、プロジェクト名に「FirstModule」という名前をつけました。プロジェクトの場所は任意の場所を入力してください。このとき、プロジェクトの場所として指定する場所には、あらかじめフォルダが存在する必要があります。
入力したら[次へ]ボタンを押してください。
パッケージ名や生成するファイルを指定する画面になります。[コード名ベース]はパッケージになります。ここでは「first」という名前でパッケージ名を付けています。
必要な項目を入力して[完了]ボタンを押すと、プロジェクトが生成されます。
生成されたプロジェクトは次のようになっています。

ウィンドウの作成
ウィンドウを作成します。プロジェクトエクスプローラーで[first]パッケージを右クリックして、メニューから[新規]-[ウィンドウコンポーネント]を選択し、ウィンドウコンポーネントを作成します。
基本設定では、ウィンドウをどこに表示するか、起動時に表示するかを指定します。今回は[ウィンドウの位置]に[explorer]を指定してください。そうすると、プロジェクトツリーなどが表示されている領域にウィンドウが開かれます。
必要な項目を入力したら[次へ]ボタンを押してください。
[名前、アイコン、場所]では名前の接頭辞とアイコン、パッケージを指定します。今回はアイコンは指定しませんが、適当な画像ファイルがあれば指定してもかまいません。その場合は、PNG形式、JPEG形式、GIF形式のどれかである必要があります。
[クラス名の接頭辞]には「Hello」と入力しておきます。そうすると、作成されるファイルの接頭辞になります。パッケージが「first」になっていることを確認したら[完了]ボタンを押すと、ウィンドウのためのファイルが生成されます。これらのファイルについては後で説明します。
フォームデザイナが表示されるので、「JButton」を配置し、ダブルクリックしてテキストを入力してください。

インスペクタ側でボタンをダブルクリックすると、ボタンを押したときの処理を入力するためのメソッドが生成されます。

次のようなコードを入力してください。JOptionPaneでメッセージを表示します。

WindowManager.getDefault().getMainWindow()は、NetBeansのウィンドウを取得しています。
実行
それでは、実行させてみましょう。プロジェクトウィンドウでモジュールを右クリックして、メニューから[プロジェクトを実行]を選択すると、コンパイルが行われて実行がはじまります。
このとき、テスト用のNetBeansが別に立ち上がって、そのなかでモジュールが実行されます。
Helloウィンドウを表示させて[こんにちは]ボタンを押すと、メッセージが表示されます。
メインメニューの[ウィンドウ]メニューには、[Helloウィンドウを開く]メニューが追加されています。Helloウィンドウを閉じたときに、このメニューからウィンドウを開きなおすことができます。
![[ウィンドウ]メニューに[Helloウィンドウを開く]が追加されている [ウィンドウ]メニューに[Helloウィンドウを開く]が追加されている](http://cz-cdn.shoeisha.jp/static/images/article/407/nb1-16.gif)
作成されたファイル
ひととおりモジュールが作成できたので、作成されたファイルを見てみます。
ここで作成されているファイルは次のようになっているはずです。ただしformファイルはNetBeans上からは見えません。
| ファイル | 概要 |
| Bundle.properties | メッセージリソース |
| HelloAction.java | 「Helloウィンドウを開く」アクション。AbstractActionを継承したクラス。 |
| HelloTopComponent.java | ウィンドウのソース。TopComponentを継承したクラス。 |
| HelloTopComponent.form | ウィンドウのコンポーネント配置。 |
| HelloTopComponentSettings.xml | ウィンドウのインスタンスを表す。 |
| HelloTopCompontntWstcref.xml | ウィンドウの表示状態を表す。 |
| layer.xml | XMLレイヤーとして表示される設定ファイル。 |
この中でモジュール作成特有のファイルについて、大まかに解説しましょう。
「HelloTopComonentSettings.xml」は次のように、ウィンドウクラスがどのクラスとして扱えるか、インスタンス化のためのメソッドは何かなどを記述します。場合によってはシリアライズされた追加の属性も埋め込まれます。後述する「layer.xml」の中で「Windows2/Components」に配置されます。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE settings PUBLIC "-//NetBeans//DTD Session settings 1.0//EN" "http://www.netbeans.org/dtds/sessionsettings-1_0.dtd"> <settings version="1.0"> <module name="first" spec="1.0"/> <instanceof class="org.openide.windows.TopComponent"/> <instanceof class="first.HelloTopComponent"/> <instance class="first.HelloTopComponent" method="getDefault"/> </settings>
「HelloTopComponentWstcref.xml」ファイルは、ウィンドウがどのような状態かを示すファイルです。「layer.xml」の中で、「Windows2/Modes」の中のウィンドウが配置された場所に対応するフォルダに配置されます。今回はexplorerの中に配置されています。
この「Mode」というのは「Docking Mode」の略ということです。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tc-ref PUBLIC "-//NetBeans//DTD Top Component in Mode Properties 2.0//EN" "http://www.netbeans.org/dtds/tc-ref2_0.dtd"> <tc-ref version="2.0" > <module name="first" spec="1.0"/> <tc-id id="HelloTopComponent"/> <state opened="true"/> </tc-ref>
layer.xmlとシステム・ファイルシステム
「layer.xml」は、NetBeansのモジュールで最も重要なファイルです。XMLの形式としてはfolderの入れ子の中にattrを持ったfileが含まれる形式になっています。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd"> <filesystem> <folder name="Actions"> <folder name="Window"> <file name="first-HelloAction.instance"/> </folder> </folder> <folder name="Menu"> <folder name="Window"> <file name="HelloAction.shadow"> <attr name="originalFile" stringvalue="Actions/Window/first-HelloAction.instance"/> </file> </folder> </folder> <folder name="Windows2"> <folder name="Components"> <file name="HelloTopComponent.settings" url="HelloTopComponentSettings.xml"/> </folder> <folder name="Modes"> <folder name="explorer"> <file name="HelloTopComponent.wstcref" url="HelloTopComponentWstcref.xml"/> </folder> </folder> </folder> </filesystem>
この「layer.xml」の内容は、[重要なファイル]の[XMLレイヤー]のうちの[このレイヤー]として表示されます。

[XMLレイヤー]の[コンテキスト内のこのレイヤー]では、NetBeans内のすべてのモジュールでの「layer.xml」を合成したものが表示されています。
よく見てみると、メニューやパレットなど、NetBeansのすべての構成情報がこのツリーで表されていることが分かります。このツリーを「システム・ファイルシステム」と呼びます。
NetBeansでの機能拡張はシステム・ファイルシステムを拡張することで行われ、設定変更はシステム・ファイルシステムを変更することで行われます。

設定変更やウィンドウの状態によって変更されたシステム・ファイルシステムの情報は、ユーザーディレクトリの「config」フォルダにシステム・ファイルシステムの構造を反映したフォルダ構造で保存されます。



![[新規プロジェクト]ダイアログ [新規プロジェクト]ダイアログ](http://cz-cdn.shoeisha.jp/static/images/article/407/nb1-03_s.jpg)



