1

Etc という名前のフォルダーがあり、同じフォルダー Example.java 内の別のファイルで使用したい画像があります。Etc\image.png と Etc\Example.java があります。画像パスとして「Etc/image.png」を使用しようとしましたが、うまくいきませんでした。これについてどうすればよいですか?

また、ファイルが異なるパッケージにあるとしたら、どうすればよいでしょうか?

私の主な .​​java クラスは、記録のために Main というパッケージにあります。

編集:

私はこれを使用しました:

ClassLoader.getSystemClassLoader().getResource("Etc\image.png");

4

3 に答える 3

2

Class.getResource()クラスローダーを使用してリソースへの URL を取得する を使用できます。例えば:

import java.net.URL;
import javax.swing.ImageIcon;

public class Example {

    public ImageIcon getImage() {
        URL url = Example.class.getResource( "image.png" );
        if( url != null ) {
            return new ImageIcon( url );
        }
        return null; // TODO: Better error handling
    }

}

重要な部分はExample.class.getResource( "image.png" )次のとおりです。イメージ パスは、名前付きクラスに対して相対的に指定されます。この場合、クラス ファイルと同じディレクトリにあります。Example.classへの参照をそのままにして、この行を他のクラスで使用することもできます。

于 2009-05-04T00:29:44.133 に答える
0

まず最初に。

Etc はパッケージですか? 言い換えれば、サンプルファイルの上部に

パッケージ等;

???

通常、パッケージ名は小文字です。それが私が尋ねる理由です。

次に、相対パスを使用してリソースにアクセスできますが、常に絶対パスを使用することをお勧めします。

そう

URL url = Example.class.getResource("/Etc/image.png");

Etc がパッケージの場合、そうでない場合

URL url = Example.class.getResource("/image.png");

そうでない場合。

于 2009-05-04T00:35:00.893 に答える
0

それが機能するには、クラスパスに Etc があるディレクトリが必要です。瓶の中にあるかどうかは覚えていません。クラスパスとして機能します。そうでない場合は、Etc をクラスパスに追加し、クラスパスなしで画像を参照するか、Etc をサブディレクトリに配置します。そのサブディレクトリをクラスパスに入れます。

于 2009-05-04T01:32:30.693 に答える