2016-11-21 1 views
0

J'essaie de créer un JButton qui affiche une image dans le JPanel lorsque j'appuie dessus, ce qui permet à l'utilisateur de choisir l'emplacement dans le panneau. J'utilise les méthodes suivantes pour peindre:Ajout d'une image dans 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; 
} 

Quand j'appelle la peinture(), je reçois une exception de pointeur NULL dans ma dernière ligne de mon 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")); 
     } 

Je suis un peu confus globalement sur la façon d'utiliser ActionListeners. C'est mon premier projet donc je m'excuse pour mon manque de connaissances.

+0

quoi? 'Graphiques g = null;' ?? –

Répondre

1

Vous avez défini Graphics g = null;

et plus tard dans la méthode de peinture que vous essayez de le jeter Graphics2D g2 = (Graphics2D)g;

vous ne pouvez pas jeter nulle, d'où le NPE.

Initialise g avec autre chose que null.

Je recommanderais de surcharger public void paintComponent(Graphics g) de JPanel où vous envisagez de peindre et d'utiliser ces graphiques.