-1

JLabel にアイコンを設定する関数 SetCover() があります。関数は次のとおりです。

public void SetCover(String URL)
{
    ImageIcon image = new ImageIcon(URL);
    lbl_cover.setIcon(null);
    lbl_cover.setIcon(image);
    lbl_cover.revalidate();
}

しかし、コードは画像を変更しません。関数の値は変わりますが、画像は変わりません。例:

SetCover("C:\Picture_1")
SetCover("C:\Picture_2")

画像は常に「picture_1」ですが、最初に入力すると:

SetCover("C:\Picture_2")
SetCover("C:\Picture_1")

写真より2枚になりますので変わりません。これがどのように来るか考えていますか?何か助けはありますか?

ありがとう :)

4

2 に答える 2

1

いくつかのシナリオが思い浮かびます:

  • AWT イベント スレッドをブロックしています。(例: 長いループで SetCover を呼び出している)
  • あなたの参照lbl_coverは、あなたが期待する実際のラベルを指していません。
于 2013-08-27T16:23:52.537 に答える
0

ImageIcon変更する前にto を設定する必要はありませんnull。通常、スイング コンポーネントは EDT (イベント ディスパッチ スレッド) を介して更新する必要がありますが、 を設定した後、前にImageIconを試してください。repaint()JLabelrevalidate()

また、ImageIconが null でないことを確認してください。あなたのパスが存在しない可能性があります。

于 2013-08-27T16:25:19.200 に答える