2012-03-22 3 views
0

私はクラスImageBeanを持っており、配列からイメージをロードするために使用したいと思います。私は画像を配列にあらかじめロードしてあり(合計9個)、ブラウザをリフレッシュするたびに1つの画像を連続して表示したい。画像は「1.jpg、2.jpg」などとなります。 (画像 '1' - リフレッシュ、画像 '2'ヒットリフレッシュ、画像 '9')。どんな助けでも大歓迎です。ありがとう。Java Server Faces配列からイメージをロードする

import java.awt.Image; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import java.io.Serializable; 
import java.util.ArrayList; 
import javax.imageio.ImageIO; 

@ManagedBean(name="ImageBean") 
@SessionScoped 
public class ImageBean implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 
    ArrayList<Image> myArr = new ArrayList<Image>(); 
    BufferedImage img = null; 

    public ImageBean() 
    { 
     for(int i = 1; i < 10; i++) 
     { 
      try 
      { 
       img = ImageIO.read(new File(i + ".jpg")); 
      } 
      catch (IOException ex) {} 

      myArr.add(img); 
     } 
    } 

    public BufferedImage getImage(int i) 
    { 
     return (BufferedImage) myArr.get(i); 
    } 
} 

編集1

私はれるBufferedImageのアレイの代わりのArrayListを使用するので、わずかにコードを編集しました。今私はエラーは表示されませんが、イメージはブラウザに表示されません。もともと

public class ImageBean implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 
    BufferedImage[] myArr = new BufferedImage[9]; 

    public ImageBean() 
    { 
     for(int i = 0; i < 9; i++) 
     { 
      try 
      { 
       myArr[i] = (ImageIO.read(new File(i+1 + ".jpg"))); 
      } 
      catch (IOException ex) {} 
     } 
    } 

    public BufferedImage getImage(int i) 
    { 
     return (BufferedImage) myArr[i]; 
    } 
} 
+0

(ちょうど最後の画像のためにリセットすることに注意してください)...現在のイメージを保持し、ちょうど次の画像を取得するための変数を追加するために、次のようになります/ /forums.oracle.com/forums/thread.jspa?threadID=2362283 – EJP

答えて

1

簡単な解決策は、httpsにクロスポスト

@SessionScoped 
public class ImageBean implements Serializable 
{ 
    private static final long serialVersionUID = 1L; 
    ArrayList<Image> myArr = new ArrayList<Image>(); 
    BufferedImage img = null; 

    private int currImgId = 1; 

    public ImageBean() 
    { 
     for(int i = 1; i < 10; i++) 
     { 
      try 
      { 
       img = ImageIO.read(new File(i + ".jpg")); 
      } 
      catch (IOException ex) {} 

      myArr.add(img); 
     } 
    } 

    public BufferedImage getImage() 
    { 
    // Reset logic would go here...probably best with array.size... 
    return (BufferedImage) myArr.get(currImgId++); 
    } 

} 
+0

ご返信ありがとうございます。問題はJava Server Pageにあると思います。 "code" 'code'は私のJSPクラスにあります。 。 – omegaFlame

+0

ArrayOutOfBondsエラーが発生する可能性があります。これは過去8時には上昇し続けるでしょう。 –

+0

JSPクラスの提案はありますか? – omegaFlame

0
public ImageBean() 
    { 
     for(int i = 1; i < 10; i++) 
     { 
      try 
      { 
       myArr.add(ImageIO.read(new File(i + ".jpg"))); 
      } 
      catch (IOException ex) {} 
     } 
    } 

それは前の画像を追加し続けるだろう失敗した場合。これは実際に画像を通過するように「フリーズ」にしているかもしれませんが、実際は同じものを表示しています。

+0

ご返信ありがとうございます。しかし今、私はjava.lang.IndexOutOfBoundsExceptionを取得します。インデックス:0、サイズ:0、ブラウザでスローされました。何か案は?ありがとう – omegaFlame

+0

これが発生している場所を表示できますか? –

+0

私は omegaFlame