我使用drawImage(BufferedImage,int,int,null)进行绘图时遇到了麻烦。我总是得到drawImage行的NullPointerException,即使我确定我的BufferedImage输入存在并且实际上是BufferedImage。我的代码如下,我保证Area的getTerrainAsset()方法将返回一个BufferedImage。
import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.*;
public class CastleDefense {
public static void main(String[] args) {
new CastleDefense();
}
public CastleDefense() {
Area area = new Area();
JFrame frame = new JFrame("Castle Defense");
frame.setSize(300, 500);
Graphics g = area.getGraphics();
g.drawImage(area.myArea[0][0].getTerrainAsset(), 10, 10, null);
frame.setVisible(true);
frame.add(area);
}
}
在其他使用Graphics的代码中,有一个paintComponent(Graphics)方法,它包含drawImage行和super.paintComponent(Graphics)行,但paintComponent(Graphics)方法本身是从未在主方法中调用过。我不明白这是如何运作的。