-1
public class delaunay extends Applet implements Runnable {
    public Graphics g;
    public void paint( Graphics g ) {
        displaytri(po[eee],arr[0].p1,arr[0].p2);
    }
    public void displaytri(Point v1, Point v2, Point v3) { 
    g.drawLine(v1.x,v1.y,v2.x,v2.y);
    g.drawLine(v2.x,v2.y,v3.x,v3.y);
    g.drawLine(v3.x,v3.y,v1.x,v1.y);        
}
}

po[eee],arr[0].p1当我尝试System.out.println()使用它们时,所有其他点都可以正常工作。每个变量v1 v2 v3都有自己的值,我试图在函数中打印这些值displaytri

这会返回一个错误:

线程“AWT-EventQueue-1”中的异常 java.lang.NullPointerException

4

2 回答 2

2

您尚未初始化您的实例/类变量g

尝试使用方法的g变量将其初始化paint为您的类变量g,如下所示:

public Graphics g;
public void paint( Graphics g ) {

   this.g = g;
   displaytri(po[eee],arr[0].p1,arr[0].p2);
}
于 2013-02-11T04:47:06.850 回答
2

您永远不应该维护Graphics对系统创建的任何对象的引用。

这可能会将您置于绘制管道之外并导致意外的绘制伪影。

相反,将引用传递g给您需要的方法......

public class delaunay extends Applet implements Runnable {

    public void paint( Graphics g ) {
        displaytri(g, po[eee],arr[0].p1,arr[0].p2);
    }
    public void displaytri(Graphics g, Point v1, Point v2, Point v3) { 
        g.drawLine(v1.x,v1.y,v2.x,v2.y);
        g.drawLine(v2.x,v2.y,v3.x,v3.y);
        g.drawLine(v3.x,v3.y,v1.x,v1.y);        
    }
}
于 2013-02-11T05:12:20.737 回答