2010年7月19日月曜日

いまさら聞けないJavaFX 1.3 (3)

Stage.


Stage {}がウィンドウということに何の抵抗も無かったが、どうもファイルの書き方というか、1つのファイルの何処に何を書いて、それがどういう順序で評価されるのかがよくわかってない。これは最初からそうなんだが、何となく「そういうもの」という理解で特に困ることもなかったのだが、一方でrunで明示的に実行することもできるわけで、釈然としない。

そもそもStageというのはクラスなので、いきなり行頭、Stageで始まるのはどうも。冷静に考えれば、そこでStageのインスタンスが「返る」のだから、そいつがうろうろしているのは想像に難くない。だがしかしである。

そこでStageを書かずに、Text{}だけを書いてみた。

Text {
font : Font {
size : 16
}
x: 10
y: 30
content: "text content"
}

すると、ふ〜ん。
2個書いたらどうか?と思ったが、後の1個しか表示されない。
ちなみに去年JavaFX書き初めの頃、Stageの配列を書いてウィンドウを沢山表示して喜んでいたと思うが、var stages = Stage {} * 10;みたいには書けないようなので、単純にfor(i in [0..9]){stages=Stage{}}でとりあえず10個出る。だがTextでこれをやっても何も出ない。Stageに入れれば当然出る。Stageを並べて書くと、書いた分だけ表示される。

結局こういう物だということで、改めて納得したような気がする。本当の意味で理解したわけではないが、前より”こういうもの感”がしっかり頭に定着した感じ。だがよく考えると、それは返って良くないことではないか。

2 件のコメント:

  1. 最後に作成されたノードに対してStageとSceneが補完されるようです。
    どちらかというと、この仕様はNetBeansでプレビューするために作られたような気がします。JavaFX 1.1のころはできませんでしたから。

    返信削除
  2. skrbさん、コメントありがとうございます。

    ノード・・・そういえばskrbさんが去年オリンピックセンターで赤なしプロジェクタで講演されたとき、ノードの話をされてましたね。あのときとてもしっくりした感じがしたのを覚えています、というか思い出しました。そっかノードか・・・今まったくピンときませんが、また時間が出来たら取り組みます。

    確かにプレビューのため、といわれると、そもそもStageがない(ウィンドウがない)JavaFXは、何かとっても自分の役に立つかもですが、それも今度やってみます。忘れないようにしなければ。

    返信削除