Archive for 5 月, 2009

Wizard Module Tutorial を真似てみる -4-

日曜日, 5 月 31st, 2009

NetBeans 6.5.1 に NBM ファイルのインストールに失敗したので開発版で試してみました。

前回と同様の手順で今回の NetBeans へのインストールは問題なさそうです。

1

2

3

4

ちゃんとインストールされ実行できます。(^^)

5

と言うことで 古いバージョンへ互換性を持たせる方法があるのかどうかは私には解りません。

とりあえず、同じバージョンの NetBeans なら問題ないようですね。たぶん。。。

Hatena タグ:

Wizard Module Tutorial を真似てみる -3-

金曜日, 5 月 29th, 2009

前回、キャストエラーで終わっていたのですが、たかくらさんよりエラーの原因をコメントでいただきましたので修正しました。

たかくらさん、ありがとうございました。(^^)

原因は97行目と98行目の第二引数でした。

これでは JTextField そのものをわたしてるだけですよね(^^;

99行目、100行目のように JTextField のテキストをわたさないと・・・

95

そういうことで修正したコードはこのようになります。

1

プロジェクトを実行すると無事にうごきました。

ウィザードダイアログの2枚目は手を加えてないので [ 完了 ] ボタンを押すと1枚目のユーザーデータが表示されます。

2 3 4

調子にのって NBM ファイルを作ってみます。

[ プロジェクト ] を右クリックして [ NBM を作成 ] を選択します。

5

NBM ファイルが作成されるので違う環境の NetBeans にインストールしてみます。

[ プラグイン ] の [ ダウンロード済み ] タブを選択し [ プラグインの追加 ] ボタンを押します。

11

先ほど作った NBM ファイルを選択します。

12

そしてドキドキしながら [ インストール ] ボタンを押します。

13

なんじゃ、こりゃ!(by 松田 優作

14

せっかくちゃんと動いたと思ったのに・・・

なにやら API のバージョンが古いとか言ってるようだ。

とりあえず、動いたので良しということにしよう!

Hatena タグ:

Wizard Module Tutorial を真似てみる -2-

木曜日, 5 月 28th, 2009

 

昨日の続きです。

ウィザードの内容を設計していきます。

DemoWizardAction.java ファイルを開きます。

NetBeans のコード補完機能と JavaDoc を利用していろいろなプロパティのカスタマイズが可能なことを確認できます。

これらについてはこちらをご覧ください。

31

DemoWizardAction.java で、 wizardDescriptor.setTitle を次のように変更します。

これでウィザードタイトルが「ねこび~ん か・わ・い・い!」になります。

32

DemoVisualPanel1.java ファイルと DemoVisualPanel2.java ファイルを開きます。

それぞれ GUI ビルダーにて下図のようにデザインします。

33

34

それぞれ、エディタ画面に切り換えて getName () メソッドをそれぞれ「名前と住所」と「趣味と好きな食べ物」に変えます。

35

36

ウィザードダイアログ画面の左側に画像を表示させてみます。

下の画像を使用します。

この画像は「ねこび~ん」と言う名前の NetBeans 日本語コミュニティのマスコットです。

http://ja.netbeans.org/nekobean

作者はカネウチカズコさんです。

http://blog.cgfm.jp/mutsuki/

とても可愛いキャラクターで人気者です。

38

37

イメージファイルを利用するプロパティを追加します。

39

ヒントのとおりインポートします。

40

プロジェクトを実行してみます。

左側に可愛いねこび~んの画像が表示されてます。

もちろんタイトルも設定したとおり、「ねこび~ん か・わ・い・い!」となってます。

ステップも設定どおりです。

[ 次へ> ] ボタンを押して次の画面へ移ります。

41 42 43

次にテキストフィールドに入力されたデータを取得します。

DemoVisualPanel1.java ファイルに取得メソッドを作成して、 DemoWizardPanel1.java ファイルからそれらにアクセスするようにします。

エディタ内を右クリックしてコンテキストメニューを出し、[ コードを挿入... ] を選択します。

51

[ 取得メソッド... ] を選択します。

52

必要なものにチェックを入れます。

そして [ 生成 ] ボタンを押します。

53

取得メソッドが生成されます。

54

メソッド名をリファクタリングを行い変更します。

55

56

それぞれ下記のように変更します。

57

DemoWizardPanel1.java ファイルの storeSettings メソッドを下記のように編集します。

58

次に、 DemoWizardAction.java ファイルの actionPerformed メソッドを下記のように編集します。

59

ヒントのとおりにインポートします。

60

これで1枚目のウィザード画面のテキストフィールドの入力値が取得できるようになりました。

次に、[ 次へ> ] ボタンが押されるときにユーザーの入力値が正しいか検証するようにします。

DemoWizardPanel1 で、 WizardDescriptor.Panel の代わりに WizardDescriptor.ValidatingPanel を実装します。

71

ヒントのとおり、[ すべての抽象メソッドを実装 ] を選択します。

72

型を Component から DemoVisualPanel1 に変更します。

73

validate メソッドを下記のように「名前」、「住所」が入力されていなかったらWizardValidationException を投げるように編集します。

75

プロジェクトを実行して動作を確認します。

入力が無いのに [ 次へ> ] ボタンを押すとエラー表示がされます。

76 77 78

ユーザー入力値が不正な場合 [ 次へ> ] ボタン無効にします。

下記コードを追加編集します。

79

80

81

無効になるけど復帰できない(><)

どうやらテキストフィールドに DocumentListener を実装してユーザー入力を拾って isValid メソッドをコールしなければいけないようだ。

82 83 84

次に、アプリケーションが閉じたときにデータをストアするようにします。

そして、ウィザードが再開したときにアプリケーションを閉じたときのデータをセットします。

DemoWizardPanel1.java で、次のように readSettings メソッド と storeSettings メソッドを編集します。

必要なクラスをインポートします。

91

92

93

94

95

プロジェクトを実行します。

下図のように入力してアプリケーションを終了します。

96

[ ファイルウィンドウ ] で下図でハイライト表示している wizard.properties ファイルを表示させると先ほど入力したデータが保持されているのが確認できます。

再びアプリケーションを実行するとこれらのデータが入力された状態で表示されます。

97

本来なら Persisting Data Across Restarts というセクションにとりかかるのですが

どうも私の英語力(無いに等しい)と Java の知識では解りませんでした。

[ 次へ> ] ボタンのテキストを変更しているようですがいきなり出てくる My Wonder Ful App とその配下のディレクトリとファイルは何なんだ?

これって何者でどうやって作ったのか?

その利用方法は?

疑問だらけです。

とりあえず解る範囲でウィザード画面をシンプルなものにするには下記のように

wizardDescriptor.putProperty(“WizardPanel_autoWizardStyle”, Boolean.FALSE);

とすればいいようです。

106

シンプルですね。

107

最後になって気がついたけど [ 完了 ] ボタンを押すと「予期しない例外」がでました。(><)

108

キャストに失敗してるのかなぁ・・・

109

ここですね。

110

う~ん、眠いし、考えても解らないと思うからパスってことで(^^;

真似ただけなのに何処かでミスをやっちまったかなぁ。

Hatena タグ:

Wizard Module Tutorial を真似てみる

水曜日, 5 月 27th, 2009

最近こちらのサイト(しんさんの出張所 はてな編)の方が NetBeans のプラグインの開発を積極的に行っています。

Java 言語の修行中の私にとっては凄いとしかいいようがないです。

是非、がんばってもらっていろんな便利なプラグインを作ってもらいたいです。

日本の片隅で密かに応援してます。

ちょうど NetBeans のサイトにウィザードモジュールのチュートリアルが掲載されたので真似てみることにします。

私は英語が駄目なので間違ってるかもしれないので参考にした上記サイトを読んだ方が確実です(^^;

とりあえず下記環境でチュートリアルを真似て試してみます。

製品バージョン: NetBeans IDE Dev (Build 200905261401)
Java: 1.6.0_13; Java HotSpot(TM) Client VM 11.3-b02
システム: x86 上で動作する SunOS バージョン 5.10; eucJP-open; ja_JP (nb)
ユーザーディレクトリ: /.netbeans/dev

[ 新規プロジェクト ] を選択し、カテゴリに [ NetBeans モジュール ] プロジェクトに [ モジュール ] を選択し [ 次へ> ] ボタンを押します。

1

[ プロジェクト名 ] 、[ プロジェクトの場所 ] を設定します。

そして [ スタンドアロンモジュール ] を選択し、[ NetBeans プラットフォーム ] を選択します。

[ 主プロジェクトとして設定 ] にチェックを入れて [ 次へ> ] ボタンを押します。

2

[ コード名ベース ] 、 [ モジュール表示名 ] 、 [ ローカライズ版バンドル ] を設定し、

[ XML レイヤーを生成 ] にチェックを入れ、[ XML レイヤー ] を設定します。

3

プロジェクトが下図のように自動生成されます。

4

5

次に [ プロジェクトウィンドウ ] の DEmoWizard プロジェクトノードを右クリックして、[ 新規 ] → [ その他... ] を選択します。

11

[ モジュール開発 ] 、[ ウィザード ] を選択し、[ 次へ> ] ボタンを押します。

12

[ ウィザードの種類 ] で [ 登録の種類 ] は [ カスタム ] を、[ ウィザードステップのシーケンス ] には [ 静的 ] を選択し、

[ ウィザードパネルの数 ] は [ 2 ] に設定して [ 次へ> ] ボタンを押します。

13

[ ウィザードステップのシーケンス ] のヘルプによると今回のような枝分かれや逆戻りがなく次々と進行するものは [ 静的 ] になるようです。

対して [ 動的 ] はウィザードの自由度が上がるけど開発者は複雑な作業をしなければならなくなり、考慮すべきことが多くなるようです。

しかし、ヘルプが日本語で存在していたことに驚きました。

14

[ 名前と場所 ] の [ クラス名の接頭辞 ] 、 [ パッケージ ] を設定します。

そして [ 完了 ] ボタンを押します。

15

プロジェクトウィンドウで各種ファイルが自動生成されたのが確認できます。

16

それでは Action クラスを修正して、layer.xml ファイルでそれを登録します。

チュートリアルの指示どおり DemoWizardAction.java ファイルを開いて下記のように編集します。

CallableSystemAction の代わりに ActionListener を実装します。

何故なら ActionListener が標準的な JDK クラスであるからです。

CallableSystemAction はそうではありません。

NetBeans プラットホーム6.5から標準的な JDK クラスを使うことが可能になりました。

そのおかげで少ないコードで今までと同じことが可能となります。

21 
22

Action クラスを layer.xml ファイルに登録します。

“iconBase” element には 16 x 16 ピクセルの  「icon.png 」 と言う名前のアイコンを登録します。

23

先ほど登録したアイコンはプロジェクトの org.demo.wizard パッケージ内にあります。

24

ちなみに小さくなって解りにくくなりましたがヘルメットを小脇に抱えデューク君です。

25

それではプロジェクトを実行してみましょう。

26

おおっ! ちゃんとデューク君がいます。

それをポチッとクリックします。

27

ウィザードダイアログが表示されました。(^^)

[ 次へ> ] ボタンを押してみます。

28

2枚目に移りました。

[ 完了 ] ボタンを押して終了します。

29

とりあえずチュートリアルを真似てみてこれだけのことが僅かな作業でできてしまうんですね。

まだチュートリアルの続きがあるのでボチボチと真似てみよう。

Hatena タグ:

安物の USB メモリー

水曜日, 5 月 27th, 2009

やっちまったよ(T-T)

16GB の USB メモリーを 3480 円で買ったら転送速度は遅いし、おまけにかなりの確率でデータが破損します。

普通に有名メーカーの高速タイプを買えばよかった。

新型インフルエンザ

月曜日, 5 月 25th, 2009

これって致死率 0.4 パーセントとかテレビで言ってたけど日本で流行したら大変なことですよね。

もう、夏にむかって収束するらしいけどウィルスが完全に死滅するわけではない。

今年の冬は大変な事態になるかもしれませんね。

しかし、ワクチンの開発がほぼ完了してあとは大量に作るだけとか・・・

この不景気に薬屋さんはうれしい悲鳴かな?

メディアで毎日のように取り上げられているけど情報が多すぎて肝心なことが伝わってこない気がする。

私たちにできることは普通の季節型インフルエンザの予防と同じことだけです。

所詮、新型といってもインフルエンザですから。

新しい物好きな私ですがこれだけは遠慮したいです。(><)

やっぱ、楽だね(^^)

火曜日, 5 月 12th, 2009

NetBeans を使って JDK 7 build 58 を試してみました。

試すといっても私は素人ですし、英語もだめなのでこちらのサイトで紹介されているものをまんま試してみました。

その一部始終はこちらです。

NetBeans に JDK を一度登録したらプロジェクトのプロパティでいつでも選択できるようになります。

1

JavaDoc も登録して使用できます。

便利です!

2

プログラム実行時のコマンドライン引数も設定できますのでいちいち長いコマンド入力をしなくてすみます。

3

気軽に試せます。

また、エラーやヒントも対応してくれます。(たぶん・・・)

新しい物好きな人で楽なのがいい人向けの隠れた使い方でしょうか(^^;

Hatena タグ: ,,

日本語対応が遅れているのかなぁ?

水曜日, 5 月 6th, 2009

製品バージョン: NetBeans IDE Dev (Build 200905051401)
Java: 1.6.0_13; Java HotSpot(TM) Client VM 11.3-b02
システム: x86 上で動作する SunOS バージョン 5.10; eucJP-open; ja_JP (nb)
ユーザーディレクトリ: /.netbeans/dev

この環境で下記のように日本語が含まれているコードとなると不具合がおこる。(サンプル長くてごめんなさい)

package javaapplication1;

import java.util.concurrent.atomic.AtomicInteger;

public class Main {

    private static final AtomicInteger count = new AtomicInteger();

    public static void main(String[] args) throws InterruptedException {
        long start, stop, diff;
        System.out.println(“Start”);
        start = System.currentTimeMillis();
        Thread t = new Thread() {

            @Override
            public void run() {
                for (int i = 0; i < 1000000000; ++i) {
                    count.incrementAndGet();
                }
            }
        };
        t.start();
        for (int i = 0; i < 1000000000; ++i) {
            count.incrementAndGet();
        }
        t.join();
        stop = System.currentTimeMillis();
        System.out.println(“Finish”);
        diff = stop – start;
        System.out.println(diff + “ミリ秒”);
        System.out.println(count);
    }
}

 

このように 6.7Beta ユーザーテストプログラムでレポートされていた現象と同じ?ようなエラーが発生します。

レポートでは Windows 環境で文字コードに UTF-8 を使用すると起こる現象で Windows-31j を使用すれば回避できるようでした。

Solaris 10 5_09 で UTF-8 を使用してもアウトでした。

11

ならば、文字コードを EUC-JP にすれば・・

12

ガ━━(= ̄□ ̄=)━━ン!!

13

エラーの数が少しへっただけじゃん (ToT)

Solaris よく解んないから念のために x-eucJP-Open でも試したけど一緒でした。

まさか Windows-31j で回避できたら笑っちゃね

しまった!

もう一つこのプロジェクトと比較用のプロジェクトを開いてました。

EUC-JP にすれば OK でした。

どうりで数が減ったんでおかしいと思った。

すみませんでした。

たぶん、システムのデフォルト文字コードでないと駄目なのかなぁ・・・

Hatena タグ:

この違いは何故?

火曜日, 5 月 5th, 2009

NetBeans 6.7 Beta のオプション設定で Maven のタブ画面の真ん中のあたりが寂しくなっているのが気になっていた。

何故なくなったんだろう?

今日、最新の開発バージョンを見たところ復活していた。

Beta で外した理由はなんだろう?

単純にうっかりしてたって落ちだと個人的に親しみがもてたりする。

2

1

Technorati タグ:

NetBeans Web アプリケーションが実行されない (自分用メモ)

月曜日, 5 月 4th, 2009

Windows Vista(64bit) 上の NetBeans にて Web アプリケーション作成し実行させる。

出力ウィンドウにはちゃんと配備され実行可能の状態のメッセージがでる。

ブラウザが立ち上がるが localhost に接続できない!

今年の3月に ML に ServiceウィンドウでGlassFish を起動すると

「アプリケーションサーバーの起動は完了しました。」と言うメッセージのあとに

“Error” をタイトルとするダイヤログウィンドウが表示されるという現象が報告されてました。

私の環境の場合 Error ダイアログはでなかったのですっかりこのことを思い出せずに小一時間悩んでました。

試しに ML で紹介されていた上記の解決方法を適用してみました。

C:\Windows\System32\drivers\etc\hosts ファイルの最後のほうにある

127.0.0.1       localhost
::1             localhost

127.0.0.1       localhost
#::1             localhost

このように

::1             localhost をコメントアウトすれば OK でした。

ML に入っていてよかった!

Hatena タグ: