0

画像を に読み込もうとしましたがImageView、スタンドアロン アプリとして実行すると正常に動作しますが、ブラウザーで実行しようとしたり、webstart として実行しようとすると表示されません。

私はもう試した:

ivFoto = new ImageView(new Image("file:/C:/Users/Carlos/Desktop/4fbzW.jpg"));

また

ivFoto = new ImageView(new Image("file:\\C:\\Users\\Carlos\\Desktop\\4fbzW.jpg"));

また

ivFoto = new ImageView("file:///C:/Users/Carlos/Desktop/4fbzW.jpg");

ここで私が間違っていることを誰かが知っていれば、助けていただければ幸いです!

4

1 に答える 1

0

4fbzW.jpgイメージ ( ) をアプリケーションの jar ファイル (イメージをロードするクラスと同じ場所) にパッケージ化し、それをリソースとして参照します。

ivFoto = new ImageView(
  new Image(
    this.getClass().getResource("4fbzW.jpg").toExternalForm()
  )
);

質問の画像参照にはいくつか問題があります。

  1. プロトコルのハードコーディングfile:

    JavaFX アプリケーションは通常、jar ファイルとしてパッケージ化されるため、アプリケーションのリソースには jar プロトコルを使用してアクセスする必要があります。メソッドを使用するgetResourceと、リソースを参照するクラスをロードするために使用されるのと同じプロトコルによってリソースがフェッチされるため、リソースを見つけるために正しいプロトコルが自動的に使用されるため、この詳細について心配する必要はありません。

  2. 開発マシンのローカル リソースを参照します。

    Webstart およびブラウザー組み込みアプリケーションの展開シナリオは、主に、ネットワーク経由でリモート クライアントに配信されるアプリケーションを参照するために使用されます。クライアント マシンのユーザーは、任意のユーザー名を持っているか、サポートされている OS を使用している可能性があるため、次の場所にファイルがある可能性はほとんどありませんC:/Users/Carlos/Desktop。イメージをアプリケーションにパッケージ化し、アプリケーションのコードに関連する場所から取得することで、デプロイされた場所に関係なく、一貫してイメージを見つけることができます。

  3. ファイル ベースのアクセスは、WebStart およびブラウザー組み込みアプリのセキュリティ サンドボックスに違反します

    この種の展開モードでは、悪意のあるアプリケーションが悪いこと (すべてのユーザー ファイルを削除したり、外国の諜報機関に送信したりするなど) を行うのを防ぐために、制限された権限でアプリケーションを実行します。これらの展開モードで昇格されたセキュリティ特権でアプリケーションを実行できるようにするには、アプリケーションに署名する必要があり、ユーザーは提供されたソフトウェアを明示的に信頼する必要があります。あなたのアプリの特定のケースでは、署名はお勧めしませんが、代わりに必要なリソースをアプリにパッケージ化して、あなたとあなたのユーザーが署名付きアプリの不便さを経験する必要がないようにします.


参照: javafx.scene.image.Image("flower.png") は flower.png をどこで検索しますか?

于 2013-04-08T21:48:41.493 に答える