アトリビュート
12/10 に JavaFX ではオブジェクト生成のときにアトリビュートを指定すると書きました。ところで、このアトリビュートにはどんなものがあるのでしょう?
Frame クラスなど、Swing で対応するクラスがある場合、だいたい Swing のプロパティに対応するアトリビュートがあるようです。
だいたいじゃ困る、というのならば API ドキュメントを見るのが一番。
JavaFX Script はまだちゃんと API ドキュメントの形式が決まっていないのですが、とりあえずここにあります。
https://openjfx.dev.java.net/nonav/api/index.html
しかし、このドキュメント見にくいよなぁ...
どんなアトリビュートがあるのか分かったところで、もう一度 Hello, World! のスクリプトを見てみましょう。
上記のドキュメントにはアトリビュートは abc 順で書いてありますが、Hello, World! のスクリプトは abc 順にアトリビュートが書いてありません。
ということは、アトリビュートはどんな順番で書いてもいいということです。
試しに、アトリビュートの順番を変えて実行してみましょう。
import javafx.ui.*; Frame { title: "Hello, World" width: 250 height: 100 visible: true content: Label { text: "Hello, World!" } }
import javafx.ui.*; Frame { content: Label { text: "Hello, World!" } visible: true title: "Hello, World" height: 100 width: 250 }
実行してみると... やっぱり同じになります ^^;;
ところで、アトリビュートの指定の行末にはセミコロンがないと気づきましたか?
そうなんです、アトリビュートの指定にはセミコロンが必要ないのです。Java を普段書いていると、ついついセミコロンを書いてしまうのですが、JavaFX Script では不要です。
セミコロンが必要なところもあるのですが、それはまた今度。
それにしても、セミコロンが必要な箇所と不必要な箇所があると、とても間違えやすい。必要でないところで、ついセミコロンを書いてしまいます。まぁ、慣れの問題なんですけどね。
では、複数のアトリビュートを 1 行に書きたい場合はどうするか分かりますか。Java だとセミコロンで区切って、複数の処理を 1 行に書けますが、それと同じことをアトリビュート指定でもしたいのです。
答えはカンマで区切る、です。
だから、上記の Hello, World! スクリプトは次のようにも書くことができます。
import javafx.ui.*; Frame { title: "Hello, World" width: 250, height: 100, visible: true content: Label { text: "Hello, World!" } }