0

何らかの理由で、Java プログラムで特定の画像を読み込めません。このコード スニペットのすぐ上に、正常に動作する別のイメージ参照があります。

for(int x = 1; x<=7; x++){
        if(additionals[x] != 0){
            rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+x+".GIF")));
            count++;
        }
    }

画像は IMAGES という名前のフォルダーに保存され、残りのコードが必要な場合は image1.gif、image2.gif などと呼ばれます。

4

2 に答える 2

2
  1. 窓ですか?GIF != gifそれ以外は
  2. 条件を削除すると機能します(additionals[x] != 0)か?
  3. rightPanelすべての画像に十分な大きさですか?
于 2012-01-25T22:56:37.513 に答える
1

これでよろしいですか:

    if (additionals[0] != 0){
        rightPanel.add(new JLabel(new ImageIcon("IMAGES/ram"+additionals[0]+"gb.gif")));
        count++;
    }
    for(int x = 1; x<=7; x++){
        if (additionals[x] != 0){
            rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+x+".gif")));
            count++;
        }
    }

本来はこれでいいのではないですか?

    if (additionals[0] != 0){
        rightPanel.add(new JLabel(new ImageIcon("IMAGES/ram"+additionals[0]+"gb.gif")));
        count++;
    }
    for(int x = 1; x<=7; x++){
        if (additionals[x] != 0){
            rightPanel.add(new JLabel(new ImageIcon("IMAGES/image"+ additionals[x]+".gif")));
            count++;
        }
    }

?

コードがより対称的に見えるようになります。それ以外の場合は、問題のある行の前に、ImageIcon を作成するために使用する String を使用して printlns を実行し、それが正しいことを確認します。

例えば:

    for(int x = 1; x<=7; x++){
        if (additionals[x] != 0){
            String imagePath = "IMAGES/image"+x+".gif";
            System.out.println("imagePath = " + imagePath);
            rightPanel.add(new JLabel(new ImageIcon(imagePath)));
            count++;
        }
    }

そして、出力された文字列をファイル名とパスと比較します。さらに良いのは、新しい File を作成し、それを使用して新しい ImageIcon を作成する前にそのフル パスを出力することです。

注意: コードはテストされていません。

于 2012-01-26T00:32:56.213 に答える