在ActionListener中添加图像

时间:2016-11-21 12:29:03

标签: java image graphics actionlistener paint

我正在尝试制作一个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感到困惑。这是我的第一个项目,所以我为我缺乏知识而道歉。

1 个答案:

答案 0 :(得分:1)

你已经设定了 Graphics g = null;

以及稍后在paint方法中你试图将它强制转换 Graphics2D g2 = (Graphics2D)g;

你不能投无效,因此也就是NPE。

用null以外的东西初始化g。

我建议覆盖您计划绘制和使用此图形的JPanel的public void paintComponent(Graphics g)