Grund für die "AWT-EventQueue-0" java.lang.NullPointerException-Fehler
Ich bin erstellen einer video-Spiel in Java und ich bin versucht, abrufen einer Liste von Koordinaten-Punkten, und ziehen Sie auf der Karte, aber jedes mal, wenn ich meine Anwendung, die ich erhalten eine "AWT-EventQueue-0" java.lang.NullPointerException und nicht in der Lage gewesen, um herauszufinden, warum es zeigt auf null. Hier ist der Fehler Bericht habe ich erhalten:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at game.PathPoints.drawObjectPath(PathPoints.java:23)
at game.TestPanel.paintComponent(TestPanel.java:64)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:866)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:581)
at javax.swing.JComponent.paintChildren(JComponent.java:866)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5145)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:302)
at javax.swing.RepaintManager.paint(RepaintManager.java:1216)
at javax.swing.JComponent.paint(JComponent.java:1015)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1784)
at javax.swing.RepaintManager$3.run(RepaintManager.java:818)
at javax.swing.RepaintManager$3.run(RepaintManager.java:795)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:795)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:764)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
at javax.swing.RepaintManager.access$1000(RepaintManager.java:61)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:673)
at java.awt.EventQueue.access$300(EventQueue.java:96)
at java.awt.EventQueue$2.run(EventQueue.java:634)
at java.awt.EventQueue$2.run(EventQueue.java:632)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:643)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Den code des Fehlers für die Klasse PathPoints ist hier:
package game;
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class PathPoints {
public PathPoints (Scanner s){
int numberCoord;
List<Coordinates> path = new ArrayList<Coordinates>();
numberCoord = s.nextInt();
for(int x = 0; x < numberCoord; x++){
Coordinates points = new Coordinates(s.nextInt(), s.nextInt());
path.add(points);
}
}
public void drawObjectPath(Graphics g){
g.setColor(Color.GREEN);
for(int n = 0; n < path.size()- 1; n++){
g.drawLine(((Coordinates)path.get(n)).x, ((Coordinates)path.get(n)).y, ((Coordinates)path.get(n+1)).x, ((Coordinates)path.get(n+1)).y);
g.drawLine(((Coordinates)path.get(n)).x, ((Coordinates)path.get(n)).y+1, ((Coordinates)path.get(n+1)).x, ((Coordinates)path.get(n+1)).y+1);
}
}
List path;
}
Den code für die Klasse TestPanel ist hier:
public class TestPanel extends JPanel implements MouseListener
{
private static final long serialVersionUID = 1L; //Ignore this - It's just to get rid of a warning.
//Instance variable(s).
int x,y;
private Image backdrop;
PathPoints objectPath;
/**
* Constructor - loads a background image
*/
public TestPanel ()
{
try
{
ClassLoader myLoader = this.getClass().getClassLoader();
InputStream imageStream = myLoader.getResourceAsStream("resources/path_1.jpg");
backdrop = ImageIO.read(imageStream);
InputStream pointStream = myLoader.getResourceAsStream("resources/path_1.txt");
Scanner s = new Scanner (pointStream);
objectPath = new PathPoints(s);
}
catch (IOException e)
{
System.out.println ("Could not load: " + e);
}
addMouseListener(this);
}
/**
* This paint meethod draws the background image anchored
* in the upper-left corner of the panel.
*/
public void paintComponent (Graphics g)
{
g.drawImage(backdrop, 0, 0, null);
objectPath.drawObjectPath(g);
//Coordinates();
}
Habe ich getestet der Konstruktor der PathPoints, um zu sehen, wenn es richtig addition der Werte der ArrayList und es ist das hinzufügen Sie richtig, also, welchen Teil sollte ich bei der nächsten zu suchen um dieses Problem zu lösen?
InformationsquelleAutor thehoule64 | 2013-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesen Zeilen, "Pfad" bezieht sich nicht auf das Attribut der Klasse ist, sondern eine locale variable. Daher das Attribut "path" wird nie initialisiert.
btw, 2 Empfehlungen :
Deine Attribute sollten private:
private Liste Weg;
InformationsquelleAutor user2147970
In der
PathPoints
Konstruktor der Klasse, die Sie versteckt sind, die die member-variablepath
mit einer lokalen Variablen:Dies bedeutet, dass die variable nie einen Wert zugewiesen und wird
null
wenn diedrawObjectPath
- Methode aufgerufen wird.Um dies zu beheben, verbergen sich nicht die member-variable; Verwendung:
InformationsquelleAutor Joni
Sind Sie shadowing die variable
path
. Eine lokale variable mit dem gleichen Namen instanziiert wird im Rahmen der KonstruktorPathPoints
aber die Membervariable Klassepath
istnull
in der MethodedrawObjectPath
. Ersetzenmit
InformationsquelleAutor Reimeus
InformationsquelleAutor KaiEn Suizai