1

アイコン用にいくつかの画像をロードするアプリケーションを作成しました。を使用して画像を読み込んでいたときに、プログラムはすべてが機能し、画像が期待どおりに読み込まれて正常に動作します

imageOpen = Toolkit.getDefaultToolkit().getImage("Images\\open.png");

しかし、それをjarとしてエクスポートすると、画像が表示されませんでした。その後、あちこちを調べた後、いくつかのことを試しましたが、どちらの場合もURLがnullを返しています

URL u = this.getClass().getResource("Images\\open.png");
imageOpen = Toolkit.getDefaultToolkit().createImage(u);

別のケース

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("Images\\open.png");
imageOpen = Toolkit.getDefaultToolkit().createImage(resource);

null を取得する理由を誰か教えてくださいイメージは Images という名前のフォルダの親ディレクトリに保存され、ソース ファイルは src>master にあります。

4

3 に答える 3

3

使用してimages/open.pngください。スラッシュはどの OS でも機能します。また、jar tvfイメージディレクトリが大文字になっていることを確認するためのjarファイルImages。Windows(または大文字と小文字を区別しないファイルシステム)を使用している場合は、ディレクトリからは正常に機能しますが、jar からは機能しない場合があります。

于 2012-11-01T17:44:04.433 に答える
1

URL が null であると確信していますか、それとも imageOpen を使用しているときに問題が発生しますか? Toolkit.getDefaultToolkit().createImage() がすぐに返されることがありますが、イメージが完全にロードされておらず、imageOpen が使用できません。画像の読み込みを待つ必要があります。これはJavaコードです

JLabel label = new JLabel();
MediaTracker media = new MediaTracker(label);

Image imagen = Toolkit.getDefaultToolkit().getImage ("fichero.gif");
media.addImage(imagen, 23);
try
{
   media.waitForID(23);
}
catch (InterruptedException e)
{
   ...
}
于 2012-11-01T18:01:45.970 に答える
0

jarのリソースバンドルを作成し、そのファイルからパスを取得することで、問題の解決策を達成することができました。

于 2012-11-28T04:03:38.890 に答える