JavaFX 簡単 NetBeans6.5 で My Application を作成 その4
前回は、 flickr 等へアップした画像ファイルを表示する為の、 javafx.scene.image.ImageView と javafx.scene.image.Image の使用方法について執筆いたしました。今回は、前々回執筆した、ボタンアクションの実装例を応用して組み合わせ、 Scene に表示された画像を、ボタンアクションによって切り替える簡単な、アルバムフリップのような、簡単なアプリケーションを作成して行きたいと思います。
注意事項としては、 javafx.scene.image.Image のエレメント、 "url" は、一度初期化すると、変更できないと言う仕様の為、画像ファイルの表示切り替えを行う場合は、 javafx.scene.image.ImageView のエレメント "image" 毎置き換える様に、コードを記述する必要があると言うことです。
それでは早速、今回私は以前このブログで投稿した、お気に入りのハンバーグ&ステーキレストランで使用した、7枚のフリッカー画像を使用して、作業を進めて行きます。
まずは、切り替えに使用する Image エレメントを、配列変数に定義します。以下のコードを参照ください。 :
var imageList = [配列変数を宣言する場合は、 "=" の右辺で "[]" を記述し、各エレメントは "," でつなぎます。この記述、 Java と言うよりは、 JavaScript に近いですね。 var は特に型を持たず、 "=" の右辺に記述されたインスタンスによって、その型が決定されることを意味していることが、容易に解釈できるかと思います。これと合わせて、表示させたい Image エレメントの index 番号を管理するための変数 index を定義します。
Image {
url: "My Flickr URL1"
},
Image {
url: "My Flickr URL2"
},
Image {
url: "My Flickr URL3"
},
Image {
url: "My Flickr URL4"
},
Image {
url: "My Flickr URL5"
},
Image {
url: "My Flickr URL6"
},
Image {
url: "My Flickr URL7"
}
];
var index = 0;そして、ボタンアクションで Image エレメントを入れ替えるため、 ImageView も変数化しておきます。コードは以下のとおり :
var imageView: ImageView = ImageView {image エレメントには、画面に初期表示させたい画像を指定しています。そして表示位置についてですが、今回は Scene にボタンを実装すると言うこともあり、 Stage のサイズを、画像よりも、縦横それぞれ50ピクセルづつ大きくし、その真ん中に画像を表示させる様にするため、それぞれ 25 ピクセルで指定しています。
image: imageList[0];
x: 25
y: 25
}
そしてアクションボタンを実装した Stage と Scene のコードは以下のとおり :
Stage {上記コードにて、今まで使用しなかった Scene の "fill" エレメントですが、これは、背景色を指定する為のエレメントで、 html で言うところの "bgcolor" のような物です。そして此処に色の指定をする場合は、必ず、 javafx.scene.paint.Color を利用する必要があります。他のパッケージの Color を使用すると、コンパイルエラーとなります。因に今回は、アルバムっぽくする為背景色を黒にしました。
title: "My Favor Hamburg"
width: 550
height: 446
scene: Scene {
fill: Color.BLACK
content: [
imageView,
SwingButton {
translateX: 240
translateY: 400
text: "NextPic"
action: function() {
index++;
if(index>6) {
index = 0;
}
imageView.image = imageList[index]
}
}
]
}
}
そして content[] のネスト内に、先ほど変数宣言した、 "imageView" と、 SwingButton を実装します。 SwingButton の action: function では、 index を1づつ加算し、配列番号最大を超えたら、元に戻る様にし、算出された index を元に、 imageView の image エレメントを、ボタンがクリックされる度に置き換える様記述しています。
これで実装作業は完了です。早速動かしてみましょう。今回は、 javaws ( Web スタート)コマンドから、 NetBeans で生成された jnlp ファイル経由で実行してみました。以下のスクリーンキャストをご覧ください。
因に上記スクリーンキャストで動作させたアプリケーションは、以下のコマンドでお試し頂けます。
javaws http://www7.atpages.jp/torutuga/javafx/MyFlickr.jnlp※注) お試用にあたっては、 JavaSE 6 update 12 をご利用ください。 Java のダウンロードとインストールはこちらからできます。
如何でしたでしょうか? それほど難解なコードを書く事もなく、アプリケーションの作成ができてしまいますね (*`д´)b goo♪ これを応用すれば、プレゼンツールなんかもおちゃのこさいさいなんて方、少なくないのではないかと思います。皆さんも是非トライしてみて下さい。
Comments
Pingback from jacksparrow » JavaFX 簡単 NetBeans6.5 で My Application を作成 その5
Date: 2009 年 2 月 17 日, 11:13 PM
[...] 前回は、ボタンクリックのアクションによって、フリッカー画像の表示切り替えするアプリケーションの作成について、投稿いたしました。今回は、作成したアプリケーションを、 Apple [...]
Comment from ゆっちょん
Date: 2009 年 6 月 13 日, 11:15 PM
はじめまして!
JavaFXを最近始めました。
まだまだ初心者ですがここのサイトで勉強させてもらっています。
「その3」まではなんとかできたのですが「その4」が解決できず困っております。
いたるところに赤線だらけです泣
この回のプログラムの全体図みたいなものを見せていただけないでしょうか?
Comment from jacksparrow
Date: 2009 年 6 月 15 日, 8:28 PM
>ゆっちょん さん
な なんと! 私のこのつたないブログで勉強ですか?!
アワワワワワワワワ(||゚Д゚)! そんな人が来るなんて夢にも思いませんでした・・・σ(^_^;)アセ
以下の URL を直接アドレスバーに入力してリソース一式をダウンロードしてください。
http://www3.atpages.jp/torutuga/downloads/MyFlickr.zip
因に環境は Vista ? XP ?
XP の場合は Mac OS X で作成したプロジェクトをすんなり読み込むことできましたが Vista ではまだ試していないです。
ひょっとするとロケールの問題でエラーが出る事があるかも・・・
Comment from ゆっちょん
Date: 2009 年 6 月 19 日, 3:43 PM
お礼の返事が送れて申し訳ないです汗
無事その4が解決できました!
ありがとうございました!
jacksparrow様のサイトはパッケージ作成などから説明が書いてあり
初心者の私なんかにはとてもありがたく感謝しています^^
そして説明もわかりやすく助かっております汗
今その10に挑戦しているのですが
なぜか最後の } に赤!が付いてしまうんです><
たびたび申し訳ないのですが、よろしければ10も見せていただけないでしょうか?汗
環境はXPなのでなんとか大丈夫な環境でやっております汗
Comment from jacksparrow
Date: 2009 年 6 月 20 日, 5:35 PM
>ゆっちょん さん
購読ありがとうございます。
ソースコードと表紙と裏表紙のイメージを同梱して以下に置きました。
http://www3.atpages.jp/torutuga/downloads/TechDays.zip
メディアファイルについては著作権保護法違反に抵触する恐れがあるので、再配布はいたしません。
ご自分で何かご用意ください。形式は .mp3 になります。
ご活用ください。
Comment from ゆっちょん
Date: 2009 年 6 月 20 日, 8:56 PM
たびたび本当にすみません汗
ダウンロードしようと思ったのですが
リンク先がNOT FOUNDなんです泣
Comment from jacksparrow
Date: 2009 年 6 月 22 日, 2:22 AM
あ!
一文字間違ってました・・・σ(^_^;)アセ
http://www7.atpages.jp/torutuga/downloads/TechDays.zip
Comment from ゆっちょん
Date: 2009 年 6 月 28 日, 12:48 PM
お返事遅れました汗
無事完成できました!!本当にありがとうございました!
感謝感謝の気持ちでいっぱいです泣
質問なんですが、写真ごとに音楽を変えることはできるんでしょうか?
Comment from jacksparrow
Date: 2009 年 6 月 28 日, 5:19 PM
>ゆっちょん さん
いつも購読ありがとうございます。
ご質問の件ですが、やろうと思えばできると思います。が、結構重くなるので処理のオーバーヘッドに
かなり時間を要することが想定されます。
やり方としては、 Media エレメントを複数用意し、 Timeline の中で play stop Media エレメントの交換 これと同時に
画像の差し替えを行う、と言った具合になろうかと想定します。
まだ試したことはありませんが・・・



Write a comment