我一直试图通过在面板上绘制BufferedImage并在componentResized发生时重绘它来创建可调整大小的图像。然而,尽管早期版本中的图像加载很好(要么根本没有调整大小,要么没有正确完成),现在Java声称图像不存在。 代码如下
public class Image extends JPanel{
BufferedImage img=null;
public Image{
try {
img = ImageIO.read(new File("Untitled.png"));
}
catch (IOException e) {
}
Dimension d=getSize();
Graphics g=getGraphics();
g.drawImage(img, 0, 0, d.width, d.height, null);
即使没有组件侦听器,它也会在drawImage上返回NullPointerException。但是我知道图像不是空的,因为它之前有效,这让我觉得这里的代码有问题
答案 0 :(得分:0)
如果出现问题:
img = ImageIO.read(new File("Untitled.png"));
然后你在这里绘制一个空引用对象:
g.drawImage(img, 0, 0, d.width, d.height, null);
这就是NPE的原因
答案 1 :(得分:0)
这是因为Graphics对象g可能为null。 图形g = getGraphics();