थ्रेड में अपवाद "एडब्ल्यूटी-इवेंट क्यूयू -0" java.lang.NullPointerException [नेटबीन]

मैं एजेंट, बाधा और मूविंग एंटीटी कक्षाओं से ड्रॉ() विधि को कॉल करने की कोशिश कर रहा हूं लेकिन मुझे यह त्रुटि मिलती है: (मुझे केवल बाधा वर्ग के साथ त्रुटि है)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.awt.Graphics.drawPolygon(Graphics.java:732)
    at Obstacle.draw(Obstacle.java:28)
    at World.draw(world.java:121)
    at MyWorldWindow.paint(MyWorldWindow.java:23)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:819)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

world.java:

import java.util.*;
import java.awt.Color; 

public class World {

    int W,H;
    int margin;
    int N;

    LinkedList entities;

    public World() {
        W = 800;
        H = 600;
        margin = 50;

        entities = new LinkedList();

        N = 10;            
        for(int i=0; i<4; i++) {            
            Obstacle o = new Obstacle ( randomPointInsideWorld(), this );
            entities.add( o );    
        }

        for(int i=0; i<3; i++) {            
            MovingEntity me = new MovingEntity ( randomPointInsideWorld(), this );
            entities.add( me );    
        }
    }

    int getW() { return W; }
    int getH() { return H; }

    Vec2D randomPointInsideWorld() {        
        double x = margin + Math.random() * (W - 2*margin);
        double y = margin + Math.random() * (H - 2*margin); 
        Vec2D p = new Vec2D(x,y);
        return p;
    }

    void processCollisions() {        
          for(int i=0; i< 0) ||
               (ei.getPos().getX() > W) ||
               (ei.getPos().getY() < 0) ||
               (ei.getPos().getY() > H))
            {
                entities.remove(ei);
            }
        }

        N = entities.size();
    }

    void update() {              
        removeOutsiders();
        processCollisions();

        for(int i=0; i

त्रुटि तब होती है जब मैं बाधा वर्ग की ड्रॉ विधि को कॉल करता हूं

बाधा वर्ग:

  import java.awt.Graphics;
  import java.awt.Color;
  import java.awt.Polygon;

//Clase Obstacle Hereda atributos de la Clase Entity
 public class Obstacle extends Entity {

      private MyPolygon p;

     //Método Constructor Obstacle
      public Obstacle (Vec2D p, World wi) {
          super (p, wi);  
          MyPolygon p1 = new MyPolygon();
          p1.randomPolygon();
          p1.center();
          p1.translate((int)pos.getX(), (int)pos.getY());
      }

    //Getter Obstacle
     public MyPolygon getObstacle() {
          return p;
      }   

     public void draw(Graphics g) {
         if(bCollides)g.setColor(Color.RED);
         else         g.setColor(Color.ORANGE);
         g.drawPolygon(p);
     }
}

मैं जावा में नौसिखिया हूं, लेकिन मुझे लगता है कि इस तथ्य के साथ यह करना है कि कुछ मूल्य बाधा वर्ग में ठीक से शुरू नहीं हुआ है ... क्या यह हो सकता है?

आप सभी को धन्यवाद।

0
अपवाद में निर्दिष्ट सटीक रेखा को इंगित करें। =)
जोड़ा लेखक Little Child, स्रोत
Obstacle.draw (Obstacle.java:28) पर शुरू करें। संभावित समस्या यह है कि p शून्य है।
जोड़ा लेखक Makoto, स्रोत

2 उत्तर

इसे बदलें

private MyPolygon p = new MyPolygon();
0
जोड़ा
हल किया! बहुत बहुत धन्यवाद: डी
जोड़ा लेखक Gera, स्रोत
नहीं .. अपने कार्यक्रमों को अच्छी तरह से जारी रखें ..
जोड़ा लेखक subash, स्रोत

private MyPolygon p; is not initialized in your Obstacle.java

परिवर्तन

 public Obstacle (Vec2D p, World wi) {
      super (p, wi);  
      MyPolygon p1 = new MyPolygon();
      p1.randomPolygon();
      p1.center();
      p1.translate((int)pos.getX(), (int)pos.getY());
  }

सेवा मेरे

 public Obstacle (Vec2D v, World wi) {
      super (v, wi);  
      p = new MyPolygon();
      p.randomPolygon();
      p.center();
      p.translate((int)pos.getX(), (int)pos.getY());
  }
0
जोड़ा