2011年12月25日日曜日

iPhoneでJavaFXを動かすマジック その1

ここからはほとんどライブログ。
[12/26追記]のつもりだったが全然進まない。

まずiPhoneでJVMを動かすわけではない。あくまでマジックなのでトリックがある。普通マジックはネタばれしたら意味ないのだが、トリックとはFXMLを使うというもの。write onceでrun iPhoneするのだ。それだとJavaFXアプリとは言えないが、まあご愛嬌。

ではさっそくググってみる。

"javafx fxml"

まず本家本元、開発者ブログ「FX EXPERIENCE」のエントリ『introducing FXML』から、PDFを読んでみる。

と、ちょっと飽きて来たので、フライングして気になっていたactionをPDF内を検索するとp11に"onAction"が見つかった。なるほど、こんな風に書けるのか。とすると、やはり当たり前だけどアクションを追加しようと思ったら、コードを追加しないと行けないのか? それともこの先に、それを軽減する技があるのか? と思ったらそのすぐ下Scriptingと題してFXMLの中にコードが埋め込めるじゃないか!

で、そこに、


"Any JVM scripting language can be used, including JavaScript, Groovy, and Clojure, among others."(該PDFより引用)

とあり、実際、その下のほうにJavaScriptによるサンプルコードも載っている。

(ここで喜楽亭休憩&ガソリン満タン)

(ここでさらにケーキ休憩。まったくライブ感が無くなってしまった)

そういえばFXMLLoaderで読み込みはできるが、保存はどうなんだろう。Ensembleで探してみるが、サンプルがない。それに右上の検索窓には「Samples and Docs」とあるが、どうもSampleしか出てこないっぽい。しょうがないので、DocumentツリーからFXMLLoader辺りを選んで見てみる。が、さすがにこれを一瞬で読み取るのは難しい。とりあえず検索できる環境でドキュメントを開こう。確か前に、

 (ここで寝る)


2011/12/26
javadocがnetbeansでなかなかうまく表示できないのに頭がついて行けず固まってしまった。まずNetBeansがBetaだった!ので消す。これはEnsembleでprojectを保存したとき、勝手に起動してくるのだが、それがBetaだったのを知ってか知らずか、そのままにしていたのだが、RC2があるので単純にそっちにしてみようというだけ。
(あ...最悪だ。ここから先の編集がぶっとんだ。一体自動保存はどうなっているんだろう? もうどうでもいいか)

RC2だとJavaプラットフォームの設定が適当にされすぎてビッくりしたが、そこを手で直してやったらちゃんとFXMLLoaderのjavadocが表示されるようになった。で、書いたのがぶっとんだので要点だけ。FXMLを保存したいが、保存してくれるAPIが無い、もしくは見つからない。FXMLドキュメントを作りたいのだが。しょうがない、取りあえず自分で書くか。それまで保存は無しで(なんという開き直り)。

(2011/12/27追記だけど12/26の作業) genericsを調べる。何となく型パラメータという認識でいたが、developerWorksの記事で余計混乱する。が、まあ、ほっとこう。

なんだかんだで、JavaFX2.1のsampleのFXML-LoginDemoをデバッガで追いながら動きを追ってみる。なんかこうダイアグラムでトレースしてくれるといいんだけどねえ。自動的にトレースログ埋め込みコンパイルオプションとか、無いんだろうか。およびそのビューア(何千回もループするようなログは見たくないので適当に端折ってくれる便利な奴。ログからフローチャートに変換してツリーで表示、かな。あ、作ってみようかなもし無かったら)。

とりあえずブレークポイントを張りながら動かしてみると、ちゃんとブレークして嬉しい。というのは、如何に今までブレークしない環境でのデバッグ経験が豊富かということの裏返し。ROM焼き一発勝負っていうのもあったよねえ。

login.fxmlのほうは表示されて、login=demo、password= demoを入力すると対応するonActionのdemo.loginController#processLoginにエントリして、profile.fxmlを表示しようとしているっぽいんだけど表示されない。replaceSceneContentには行ってるんだけど、stage.getScene().setRoot(page); が効いてなみたい。

(ここはBloggerの話)
やっぱり自分の操作ミスじゃなかった。保存してから公開したら、古いものが公開されて保存に戻す、も効かない。さっき書いたのは消えてしまった。docomoのspモードか? これはもう書くなという啓示に等しいw とりあえず戻って26日の分をmemoる。

 (それにしてもBlogger、この恐ろしい無関係なspan入れまくりのプログラム、どうやったら書けるの?w)

2011/12/27
次のエントリへ。

0 件のコメント:

コメントを投稿