Create Splash Screen(1)
仕様
NetBeansを使って何を作るか。最初は簡単なものを作ろうと考えていたのですが、最近
MLでSplashScreenの作成が話題になっているので、これを作ってみようと思いました。
チュートリアルで作ったColorPickerのロード中に表示させてみたいと思います。
ところで、SplashScreenとは次のような仕様を満たすものとして考えます。
ヒント
ところで、私の力では一から作ることはできませんので、何かお手本が欲しいところです。
まず、JDCのドキュメントが参照できることが分かりました。
http://developer.javasoft.com/developer/qow/archive/24/index.html
でサンプルソースが提供されているのです
(ちなみに、登録が必要ですが、無料なので必要な方は登録して下さい)。
また、
http://www.nerosworld.com/ping/kiwi/
というパッケージ集があるという情報も得られました。
その他何人かの方がサンプルを提供していました。
ところが、これらには共通の問題点がありました。これらのサンプルはいずれも予め定めた一定時間
ウィンドウを表示しているに過ぎないのです。
そうではなくて、全てのクラスがロードされるまで表示される、
という機能を実現したいと思うのです。
そんなことを考えていたら、たまたまなのですが、JDKのDEMOの中でJava2Dデモが、
起動時画面を表示させていることに気付きました。しかもプログレスバー付きで格好もいいです。
コードも何となく理解できそうな範囲です。というわけで、これを参考に、
タイトルを取り、GIF画像を貼るなどして作ることにしました。
ちょっと余談
ところでちょっと余談ですが、こうやって色々なサンプルを見るのにもNetBeansは適しています。
VisualCafeにしろ、JDeveloper・JBuilderにしろ、基本的にプロジェクトファイルを作るところから
始まるので、既存のファイルを組み込むと言うことがやっかいなような気がします。
(できないことはないと思いますが、ぱっと見てどうやったらよいのか分からないのです。)
それに対してNetBeansは、リポジトリというものを基本としていますが、リポジトリに登録するのは
ディレクトリ、またはJARファイルです。そしてディレクトリを登録してしまえば、
そのまま実行もできてしまうのです。
現在、最新版のkiwiはJARファイルで提供されていますが、これをリポジトリに登録することにより、
解凍せずに中身を見ることができます。素晴らしい!
ただし、私も最初分からなかったのですが、リポジトリに登録したディレクトリの中にあるディレクトリは
パッケージとして考えられるようです。ちょっとよく分かってないのでニュアンスだけ汲み取って
いただければありがたいのですが、例えばJDKのJava2Dのデモを試したいときには、
DEMOディレクトリ等を登録してもだめで、jdk1.2\demo\jfc\Java2Dを登録しないといけません。
例として私の現時点のリポジトリはこんな感じになっています。
ついでにもう一つ余談ですが、こちらで
JAVAとNetBeansの入門書のようなものが配布されています。pdf形式のドキュメントで、
ダウンロードは自由にできます。私もとりあえず落としてみました。
NetBeansの本なんて一般には売られていないと思いますので、貴重品ですね。
ぜひ読んでみようと思います。
分析
さて、では画面にあるように、projects\javaというディレクトリの中にsplashという名前の
パッケージを作って、その中でスプラッシュスクリーンの後にカラーピッカーが起動するという
アプリケーションを作ります。
まず、今回はチュートリアルで作ったカラーピッカーの使い回しですから、ウィザードで
一から作るのではなく、なるべく楽に作る方法を試しながらやっていきます。
まず、ディレクトリを右クリックしてNewPackageを選択すればパッケージが作られます。
次に、その中に、チュートリアルで作ったcolorpickerパッケージの中身をコピーします。
この時点でコンパイルしてみるとexamples.colorpickerというパッケージが見つからないという
メッセージが出ます。
当然ですので、エディタでこれをsplashに置換してしまいます。
これで動くようになるのですが、コピーして修正して、というのをNetBeansのエクスプローラと
エディタでやろうとしたところ、若干動きのおかしい部分がありました。
実は、コピーの時点で自動的にパッケージ名を自動的に修正しているのですが、
修正し残りが出てしまい、それをエディタの置換機能で修正しようとしても
うまく行かない部分があるのです。
というわけで、コピーはOSコマンドでやって、置換は普段使っているエディタで
やるのが良さそうです。そのあとで、リポジトリを登録し直せば修正が反映されます。
これにスプラッシュを組み込みますが、まず、Java2Dデモの中身を簡単に
覗いてみます。すると、Java2Demoコンストラクタの中で、demosディレクトリの中にある
アプリケーションの個々の要素をタブpaneに貼り付けながら、貼り付けるごとに
プログレスバーを設定するということをやっているようだと分かります。
さらに見てみるとmainメソッドでprogressPanelという名前のパネルを作って
プログレスバーなどを配置した後に、Java2Demoをnewしていることが分かります。
これに対して、現在のcolorpickerはmainでは
new ColorPicker ().show ();
の一行があるだけで、ColorPickerのコンストラクタでは
initComponents ();
pack ();
の二行があるだけです。initComponentsはフォームエディタで自動生成される編集不可能部分で、
NetBeansはコンポーネントの配置はこのような方法をとっているようです(見やすい!)。
ということで、必要な作業は、mainで先にスプラッシュ用の画面を作成するということと、
initComponentsの中でプログレスバーを伸ばしてやるということになりそうです。
画面を作成
では、まずスプラッシュ画面の作成です。
ここで、Java2Demoサンプルのコピーをしてもいいのですが、せっかくフォームエディタが
あるのですから、それで作って、mainで呼び出すことにします。
そこでjava.awt.Windowだとタイトルバーがないそうなので、早速作ろうとしたのですが、
なんと、windowは作れないようです。swingでもJWindowというのがあるのですが、これもだめ。
仕方がないので、とりあえずサンプル同様JFrameで作ることにします。そして
うまくいったら、windowに変えられるか試してみたいと思います。
気を取り直して進めましょう。
JFrameを作り、SplashScreenと名前を付けます。JProgressBarとラベルは
適当に置いたらよいでしょう(ちなみに画像はラベルに貼るというのはチュートリアル3を
調べて初めて知りました)。
で、下のような画面が簡単にできました。
![](images/mysplash.gif)
ちなみに画像はPOV-Rayという3D画像ソフトを使っています。これもなかなか面白いやつなので
興味ある方はどうぞ(www.povray.org)。
息切れ?
しかし、ここから先が思ったより難しそうです。参考書のない状態では、ちょっと厳しくなってきました。
そこで、この続きはもう少しレベルアップした後に続けたいと思います。
|