2011-05-05 4 views
1
public void saveImage(String path){ 
    BufferedImage image = (BufferedImage) createImage(500, 500); 
    Graphics gImage = image.getGraphics(); //<<<<<<<<--- exception 
    paint(gImage); 
    image = image.getSubimage(0,0,500,500);  
    try { 
     ImageIO.write(image, "png", new File(path+".png")); 
    } 
    catch (Exception e){} 
} 

어디에 문제가 있습니까 ??BufferedImage에 대한 getGraphics()의 Null 포인터 예외?

+0

감사합니다.하지만 더 많은 도움이 필요합니다. 타이머를 사용하여 JPanels의 arraylist를 표시 할 때 타이머가 중지되면 .isDisplayable() 메서드는 false를 반환하고 예외가 나타나고 그렇지 않으면 이미지가 저장됩니다. . 그래서 내가 무엇을해야하니 ?? – Dawnlight

답변

0

귀하의 NPE는 getGraphics에서 온 것이 아니며 null image 변수를 역 참조하려고 시도한 것이 아닙니다. 구성 요소를 표시 할 수없는 경우 은 null을 반환합니다.

2

분명히 방법 createImage(int, int)null을 반환합니다. 그 이유는 documentation에 설명되어 있습니다 :

결과 :
있는 오프 스크린 drawable 이미지 더블 버퍼링에 사용할 수 있습니다. 구성 요소를 표시 할 수없는 경우 반환 값이 null 일 수 있습니다. GraphicsEnvironment.isHeadless()가 true를 돌려 주면, 항상 가됩니다.

관련 문제