2012-03-22 2 views
0

클래스 ImageBean이 있고 배열에서 이미지를로드하는 데 사용하고 싶습니다. 이미지가있는 배열을 미리로드하고 (총 9 개) 브라우저를 새로 고칠 때마다 하나의 이미지를 연속적으로 표시하려고합니다. 이미지의 이름은 '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); 
    } 
} 

내가 ArrayList를 대신 BufferedImage의 배열을 사용 그래서 약간의 코드를 편집 한 1

편집. 이제는 오류가 발생하지 않지만 이미지는 브라우저에 표시되지 않습니다. 그것은 이전 이미지를 계속 추가 할 것이다 실패 원래 경우

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

이 HTTPS에 Crossposted ... 현재 이미지를 유지하기 위해 변수를 추가하고 바로 다음 이미지를 얻을 것 /forums.oracle.com/forums/thread.jspa?threadID=2362283 – EJP

답변

1

간단한 솔루션은 (단지 마지막 이미지를 다시 명심)

@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 서버 페이지에 문제가 있다고 생각합니다. 'code {h : graphicImage value = "# {ImageBean.getImage (0)}"alt = "이미지를 찾을 수 없습니다."/>'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 : Index : 0, Size : 0 브라우저에서 throw됩니다. 어떤 아이디어? 감사합니다. – omegaFlame

+0

어디에서 발생했는지 보여 줄 수 있습니까? –

+0

JSF 페이지에 본문에있는 원인이라고 생각합니다. – omegaFlame

관련 문제