2011-05-05 36 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()中的空指針異常?

+0

謝謝,但我需要更多的幫助.. 我使用計時器來顯示JPanels arraylist,當計時器停止方法.isDisplayable()返回false和異常出現,否則圖像被保存.. 。 所以我該怎麼做 ?? – Dawnlight 2011-05-05 07:46:44

回答

0

您的NPE可能不是來自getGraphics,而是試圖取消引用空變量image變量。如果您的組件不可顯示,createImage返回null

2

顯然該方法createImage(int, int)正在返回null。究其原因,在解釋documentation

返回:
離屏可繪製的圖像,其可以被用於雙緩衝。 如果組件不可顯示,則返回值可能爲空。如果GraphicsEnvironment.isHeadless()返回true,總會發生 。