メニューのTools ⇒ Optionsで開く下の画面。
これは、色々な設定をするための画面になります。
ここに、自分で作ったモジュールのための設定も足したい!!って時には?ってことで話しを進めます。
とりあえず、プロジェクトが無いと話しにならないので、新規作成からSettingsという名前でモジュールのプロジェクトをこさえます。
プロジェクトの適当なパッケージ(ここではcom.wankuma.kazuki.settings)に作りこんでいきます。
新規ファイルから、Options Panelを選択します。
そうすると、下のような画面が出てきます。ラジオボタンで二種類選べるようになってます。
- Create Miscellaneous Panel
Options画面のMiscellaneousの所に表示されるようになります。
あんまり本格的じゃないならここがいいかも? - Create Primary Panel
これを選ぶと、JavaやKey MapやRubyなんかと同列の位置に出てきます。
アイコンを描く気力があるならこっちでもいいかも?
ここでは、アイコンを描くのがめんどくさいので、Create Miscellaneous Panelを選んでTitleに「Sample Options」、Tool Tipに「Hello world」と入力してNextを押します。
次は、クラスのプレフィックスとかを入れる画面になるけど、とりあえず初期値のままでFinish!!
とりあえず、このままおもむろに実行してどうなってるかを見てみます。
ばっちりできてる!!次は、ここにラベルとテキストボックスを置いて見ます。
ここらへんは、NetBeansがEclipseより優れてる少ない点の大きな1つ。GUIのデザイナでさくっとやります。
SettingsPanel.javaがOptions画面に出るUIになるので、そこにラベルとかを置いて見ます。
実行すると、ちゃんと表示される。
ってことで、ここに入力した文字が永続化されることと、適当にメニューを作って、そこのアクションでこの設定画面の文字がとれることを確認してみようと思う。
永続化させるのは、超簡単だった。
SettingsPanelのloadメソッドに読み込み。storeでダイアログの中身を書き込む。
SettingsPanel.java
void load() {
textFieldMessage.setText(Preferences.userNodeForPackage(getClass()).get("message", "Hello world"));
}
void store() {
Preferences.userNodeForPackage(getClass()).put("message", textFieldMessage.getText());
}
これだけでOKだった。
PreferencesクラスのuserNodeForPackageメソッドでなにやら設定情報を溜め込んでくれるクラスを取得できる。
後は、これから値を読んだりすればOKだった。
ばっちり!!ためしに「こんにちは世界」に変更してOKを押してNetBeansを再起動してから、もう一度Optionsの画面を開いて見ると。
ばっちりだ!!!
最後に、適当にメニューをこさえて以下のコードを書いたら完成。
public void performAction() {
String message = Preferences.userNodeForPackage(SettingsPanel.class).get("message", "Hello world");
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(message));
}
メニューをクリックすると、設定画面で設定した文字列が表示される。
意外と簡単だったのでちょっとびっくりでした。