1

編集:これはNetbeansプロジェクトです。 そこで、CardというJButtonのサブクラスを作成しました。作成時にボタンにアイコンを設定しようとしています。

package matchinggame;

public class Card extends JButton {

    final static ImageIcon defaultIcon = new ImageIcon("cardback.jpg");

    ...

    public Card(int secretIconIndex) { 
        //Set the button's icon to the default icon
        setIcon(defaultIcon);
        ... 
    }

    ...

}

ご参考までに、「cardback.jpg」画像の場所は次のとおりです。

C:\Users\Jesse\SkyDrive\Documents\RCS\Grade 12\ICS4U\M9\MatchingGame\src\matchinggame\cardback.jpg

すべてのクラスと同じフォルダ/パッケージにあるので、相対ファイルパスはそのままにしておくことができると思います。プログラムを実行すると、すべてのボタンが空白になります(テキストやアイコンはありません)。これはコンストラクターの問題ですか、それともファイルパスの問題ですか?

4

3 に答える 3

4

これがEclipseプロジェクトの場合は、resources/フォルダー内のフォルダーに画像を保存しsrc/ます。

setButtonIcon("cardback.jpg");

public void setButtonIcon(String filename) {
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  InputStream input = classLoader.getResourceAsStream("/"+filename);
  ImageIcon icon = new ImageIcon(ImageIO.read(input));
  super.setIcon(icon);
}
于 2013-02-18T23:56:20.903 に答える
1

私の質問は質問コメントで答えられました。brano88とHovercraftFullof Eelsは、ファイルパスの代わりにリソースを使用すると言われています。以下は私の問題を修正しました:

final ImageIcon defaultIcon = new ImageIcon(getClass().getResource("/resources/cardback.jpg"));

これをカードクラスに入れました。

注:画像をEclipseの「src」フォルダー内の新しい「resources」パッケージまたはNetbeansの「SourcePackages」フォルダーに移動しました。

于 2013-02-19T00:13:11.447 に答える
0

「日食」を使用する場合、絶対パスを使用するには、画像が「src」フォルダ内にある必要があります。使用する:
new File("cardback.jpg").exists() // to see if the file is in the right place

于 2013-02-18T23:55:47.537 に答える