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){}
}
问题在哪里?
答案 0 :(得分:2)
显然,方法createImage(int, int)
正在返回null
。原因在documentation:
返回:
屏幕外可绘制图像,可用于双缓冲。 如果组件不可显示,则返回值可以为null。这将 如果GraphicsEnvironment.isHeadless()返回true,则总会发生。
答案 1 :(得分:0)
您的NPE可能不是来自getGraphics,而是来自尝试取消引用null image
变量。如果您的组件无法显示,createImage
会返回null
。