Исключение нулевого указателя в getGraphics() для BufferedImage?
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){}
}
В чем проблема??
2 ответа
Решение
Ваш NPE, вероятно, происходит не от getGraphics, а от попытки разыменования нулевого значения. image
переменная. Если ваш компонент не отображается, createImage
возвращается null
,
Видимо метод createImage(int, int)
возвращается null
, Причина объяснена в документации:
Возвращает:
отрисовываемое за пределами экрана изображение, которое можно использовать для двойной буферизации. Возвращаемое значение может быть нулевым, если компонент не отображается. Это всегда происходит, если GraphicsEnvironment.isHeadless() возвращает true.