2016-11-21 11 views
0

Ich versuche eine JButton zu erstellen, die ein Bild im JPanel anzeigt, wenn sie gedrückt wird - damit der Benutzer die Position im Panel auswählen kann. Ich verwende die folgenden Methoden zu malen:Hinzufügen eines Bildes in 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; 
} 

Wenn ich Farbe() aufrufen, erhalte ich eine Null-Zeiger-Ausnahme in meiner letzten Zeile meiner Action:

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

Ich bin ein wenig verwirrt insgesamt über die Verwendung von ActionListeners. Dies ist mein erstes Projekt und ich entschuldige mich für meinen Mangel an Wissen.

+0

was? 'Grafik g = null;' ?? –

Antwort

1

Sie haben gesetzt Graphics g = null;

und später in Farbe Methode Sie versuchen, es Graphics2D g2 = (Graphics2D)g;

Sie null, daher der NPE werfen kann nicht zu werfen.

Initialisiere g mit etwas anderem als null.

Ich würde empfehlen, public void paintComponent(Graphics g) des JPanel überschreiben, wo Sie planen, diese Grafiken zu malen und zu verwenden.

Verwandte Themen