Wizard Module Tutorial を真似てみる -2-
昨日の続きです。
ウィザードの内容を設計していきます。
DemoWizardAction.java ファイルを開きます。
NetBeans のコード補完機能と JavaDoc を利用していろいろなプロパティのカスタマイズが可能なことを確認できます。
これらについてはこちらをご覧ください。
DemoWizardAction.java で、 wizardDescriptor.setTitle を次のように変更します。
これでウィザードタイトルが「ねこび~ん か・わ・い・い!」になります。
DemoVisualPanel1.java ファイルと DemoVisualPanel2.java ファイルを開きます。
それぞれ GUI ビルダーにて下図のようにデザインします。
それぞれ、エディタ画面に切り換えて getName () メソッドをそれぞれ「名前と住所」と「趣味と好きな食べ物」に変えます。
ウィザードダイアログ画面の左側に画像を表示させてみます。
下の画像を使用します。
この画像は「ねこび~ん」と言う名前の NetBeans 日本語コミュニティのマスコットです。
http://ja.netbeans.org/nekobean
作者はカネウチカズコさんです。
とても可愛いキャラクターで人気者です。
イメージファイルを利用するプロパティを追加します。
ヒントのとおりインポートします。
プロジェクトを実行してみます。
左側に可愛いねこび~んの画像が表示されてます。
もちろんタイトルも設定したとおり、「ねこび~ん か・わ・い・い!」となってます。
ステップも設定どおりです。
[ 次へ> ] ボタンを押して次の画面へ移ります。
次にテキストフィールドに入力されたデータを取得します。
DemoVisualPanel1.java ファイルに取得メソッドを作成して、 DemoWizardPanel1.java ファイルからそれらにアクセスするようにします。
エディタ内を右クリックしてコンテキストメニューを出し、[ コードを挿入... ] を選択します。
[ 取得メソッド... ] を選択します。
必要なものにチェックを入れます。
そして [ 生成 ] ボタンを押します。
取得メソッドが生成されます。
メソッド名をリファクタリングを行い変更します。
それぞれ下記のように変更します。
DemoWizardPanel1.java ファイルの storeSettings メソッドを下記のように編集します。
次に、 DemoWizardAction.java ファイルの actionPerformed メソッドを下記のように編集します。
ヒントのとおりにインポートします。
これで1枚目のウィザード画面のテキストフィールドの入力値が取得できるようになりました。
次に、[ 次へ> ] ボタンが押されるときにユーザーの入力値が正しいか検証するようにします。
DemoWizardPanel1 で、 WizardDescriptor.Panel の代わりに WizardDescriptor.ValidatingPanel を実装します。
ヒントのとおり、[ すべての抽象メソッドを実装 ] を選択します。
型を Component から DemoVisualPanel1 に変更します。
validate メソッドを下記のように「名前」、「住所」が入力されていなかったらWizardValidationException を投げるように編集します。
プロジェクトを実行して動作を確認します。
入力が無いのに [ 次へ> ] ボタンを押すとエラー表示がされます。
ユーザー入力値が不正な場合 [ 次へ> ] ボタン無効にします。
下記コードを追加編集します。
無効になるけど復帰できない(><)
どうやらテキストフィールドに DocumentListener を実装してユーザー入力を拾って isValid メソッドをコールしなければいけないようだ。
次に、アプリケーションが閉じたときにデータをストアするようにします。
そして、ウィザードが再開したときにアプリケーションを閉じたときのデータをセットします。
DemoWizardPanel1.java で、次のように readSettings メソッド と storeSettings メソッドを編集します。
必要なクラスをインポートします。
プロジェクトを実行します。
下図のように入力してアプリケーションを終了します。
[ ファイルウィンドウ ] で下図でハイライト表示している wizard.properties ファイルを表示させると先ほど入力したデータが保持されているのが確認できます。
再びアプリケーションを実行するとこれらのデータが入力された状態で表示されます。
本来なら Persisting Data Across Restarts というセクションにとりかかるのですが
どうも私の英語力(無いに等しい)と Java の知識では解りませんでした。
[ 次へ> ] ボタンのテキストを変更しているようですがいきなり出てくる My Wonder Ful App とその配下のディレクトリとファイルは何なんだ?
これって何者でどうやって作ったのか?
その利用方法は?
疑問だらけです。
とりあえず解る範囲でウィザード画面をシンプルなものにするには下記のように
wizardDescriptor.putProperty(“WizardPanel_autoWizardStyle”, Boolean.FALSE);
とすればいいようです。
シンプルですね。
最後になって気がついたけど [ 完了 ] ボタンを押すと「予期しない例外」がでました。(><)
キャストに失敗してるのかなぁ・・・
ここですね。
う~ん、眠いし、考えても解らないと思うからパスってことで(^^;
真似ただけなのに何処かでミスをやっちまったかなぁ。
Tags: NetBeans
storeSettings()メソッド内のプロパティをセットしている箇所にて、キー “name” に対し、 nameField (JTextField) がセットされているのが原因かと思います
該当箇所を、”((DemoVisualPanel1)getComponent()).getNameField().getText()” と修正されてはいかがでしょうか?
(次行も同様ですね)
たかくらさん、ありがとうございます。
ご指摘のとおり、ここでミスってますね。
第二引数を nameField.getText() に、次の行は addressField.getText() に修正したところキャストエラーは無事解消されました。
ありがとうございました。(^^)