2012-04-22 12 views
0

ArrayListに格納されたBufferedImagesを使用してJButtonの画像アイコンを変更するループを作成したいとします。試してみると、最後の画像に設定され、残りの部分はスキップされます。関連するコードは次のとおりです。Java:ループ内のボタンの画像アイコンを変更する(スライドショーの場合)

private void playButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    for (int x = 0; x < myPhotos.size(); x++) { 
     icon.setImage(myPhotos.get(x)); 
     displayButton.setIcon(icon); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 

myPhotosはバッファリングされた画像の配列リストです。

アイコンはImageIconです。

displayButtonはJButtonです。

私は、この問題はJButtonのアイコンが1回しか設定できないと思っています。私はあなたの誰かがこれを回避する方法を知るのに十分なほど巧妙であることを望んでいます。

+0

JButtonのAPI(AbstractButtonのAPIにリンクしています)を見てください。 JButtonのアイコンを一度しか設定できなかった場合、APIはそうと言いますが、そうではありません。あなたにとってラッキー@AKJはAKJの答えに1+を "十分に賢い"ものです。 –

+0

画像を通過させるために前後ボタンを作成し、画像が非常にゆっくりと変化します。私はこれが実際にスライドショーが私が期待していた方法で動作していなかった理由だと思います。私にとってラッキーなのは、私は "賢い"です。 –

+0

うん、あなたのために幸運! :) –

答えて

1

ここで絵をブロックしているときにスリープしないでください。反復的なタスク、つまり固定間隔の後にアイコンを変更するために、Swingのタイマーを使用する必要があります。

+0

ありがとう、私はこれを試してみましょう。 –

関連する問題