2016-11-21 3 views
0

Я пытаюсь создать JButton, который отображает изображение в JPanel при нажатии, что позволяет пользователю выбирать местоположение на панели. Я использую следующие методы для рисования:Добавление изображения в ActionListener

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; 
} 

Когда я звоню краску(), я получаю исключение нулевого указателя в моей последней строке моего 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

какой? 'Графика g = null;' ?? –

ответ

1

Вы установили Graphics g = null;

, а затем в методе рисования вы пытаетесь бросить его Graphics2D g2 = (Graphics2D)g;

вы не можете бросить нуль, следовательно, NPE.

Инициализировать g чем-то иным, чем null.

Я бы порекомендовал переопределить public void paintComponent(Graphics g) JPanel, где вы планируете рисовать и использовать эту графику.

Смежные вопросы