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
答案 0 :(得分: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);
}
答案 1 :(得分: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);
}
}