我正在尝试制作一个JButton,在按下时在JPanel中显示图像 - 允许用户在面板中选择位置。我使用以下方法绘制:
public void paint(Graphics g, URL path) {
Image img = getImage(path);
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(img, getX(),getY(),50,50, null);
}
public Image getImage(URL path) {
Image temp = null;
try
{
temp = Toolkit.getDefaultToolkit().getImage(path);
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
当我调用paint()时,我在ActionListener的最后一行得到一个空指针异常:
dogButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Graphics g = null;
Animal animal = new Animal();
animal.paint(g, main.class.getResource("/Animals/dog.jpg"));
}
我总体上对如何使用ActionListeners感到困惑。这是我的第一个项目,所以我为我缺乏知识而道歉。
答案 0 :(得分:1)
你已经设定了
Graphics g = null;
以及稍后在paint方法中你试图将它强制转换
Graphics2D g2 = (Graphics2D)g;
你不能投无效,因此也就是NPE。
用null以外的东西初始化g。
我建议覆盖您计划绘制和使用此图形的JPanel的public void paintComponent(Graphics g)
。