JavaFXのサンプルソース見てるとたまにこういうのが出てくる。
imageView = ImageView { image: Image{ url: "{__DIR__}test.png" } }
んで、これをNetBeansで実行させるとbuild配下にあるjarの中身を指すことになる。
urlさえあれば見に行けるので問題無いんだけど、画像なんかはまとめて置いておきたいじゃない?
コード上で{__DIR__}ってなってるとそのパッケージ配下を指してるようで、
たとえば上のコードがcom.battella.javafx.sampleというパッケージにあるクラスに記述されていると、
{__DIR__} は com/battella/javafx/sampleディレクトリを指すことになって、jarファイルでも同じ場所。
{__DIR__} を別のパッケージ配下で使えば{__DIR__}の指す内容が異なるわけで...
なーんか扱いづらさを感じるんだよね。そしたら普通に定数とかプロパティで
画像フォルダ持ってくるんで良いじゃんと。
NetBeans特有なのかどうか解らんのでちょっと調べないとだな。
2 件のコメント:
{__DIR__}の動作はNetBeans特有ではなく、JavaFXの仕様なんです。
実際にはスクリプトファイルがクラスファイルに変換され、このクラスを読み込むクラスローダからURLを取得しています。
{__DIR__}はJARでも簡単にURLが取得できるので使っているだけなので、もし画像ファイルが別のところにあるのであれば、{__DIR__}を使わずに、そのURLを指定してもぜんぜんかまわないと思いますよ。
> skrbさん
わあ、見つかっちゃいましたね(^^;
# 先日Twitterでフォローさせていただきました!
コメント&情報提供ありがとうございます。
やはり仕様なのですね。
最初は実行しているディレクトリかと勝手に思い込んでいたのですが、JARロードしてアプレットかWebStart経由で配布・動作させるとなるとこういう形になるのかなぁと納得しています。
JAR内部をURLで簡単に取れるというのは楽で良いですね。
JavaFX、まだまだ工夫は必要なようで試行錯誤しようと思います(^^
コメントを投稿