Java 处理:你能在处理类之外画画吗?

Java 处理:你能在处理类之外画画吗?,java,function,class,processing,jetbrains-ide,Java,Function,Class,Processing,Jetbrains Ide,我试图将代码组织到可以在主处理类之外绘制的位置,但是,每当我尝试这样做时,就会得到一个NullPointerExeption public class Processing extends PApplet { PApplet p = new PApplet(); Screen homeScreen = new Screen(new Vector2(0, 0), p); public static void main(String[] args) { P

我试图将代码组织到可以在主处理类之外绘制的位置,但是,每当我尝试这样做时,就会得到一个
NullPointerExeption

public class Processing extends PApplet {

    PApplet p = new PApplet();
    Screen homeScreen = new Screen(new Vector2(0, 0), p);

    public static void main(String[] args) {
        PApplet.runSketch(new String[]{"Processing"},
                new Processing());


    }

    public void settings() {
// Setup
        size(500, 500);

        TextBox t = new TextBox(new Vector2(0, 0), new Vector2(300, 300), new PApplet());
        homeScreen.addContent(t);
    }
}

我正在调用下面显示的
TextBox
类中的
display()
方法

public void display() {

        // Text Box Body
        p.pushMatrix();
        p.fill(240);
        p.rect(pos.getPos()[0], pos.getPos()[1], dimensions.getPos()[0], dimensions.getPos()[1]);

    }
java.lang.NullPointerException
    at processing.core.PApplet.pushMatrix(PApplet.java:13149)
    at TextBox.display(Processing.java:154)
    at Screen.display(Processing.java:83)
    at Processing.draw(Processing.java:29)
    at processing.core.PApplet.handleDraw(PApplet.java:2426)
    at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1557)
    at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:316)

Process finished with exit code 0
p
是通过构造函数传递的
PApplet
对象。例外情况如下所示

public void display() {

        // Text Box Body
        p.pushMatrix();
        p.fill(240);
        p.rect(pos.getPos()[0], pos.getPos()[1], dimensions.getPos()[0], dimensions.getPos()[1]);

    }
java.lang.NullPointerException
    at processing.core.PApplet.pushMatrix(PApplet.java:13149)
    at TextBox.display(Processing.java:154)
    at Screen.display(Processing.java:83)
    at Processing.draw(Processing.java:29)
    at processing.core.PApplet.handleDraw(PApplet.java:2426)
    at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1557)
    at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:316)

Process finished with exit code 0
如果我将
pushMatrix()
注释掉,同样的错误也会发生,只是指向
fill()
函数


谢谢你的帮助

注意:您正在创建多个
PApplet
实例,这将使您的代码混乱,并会遇到错误。
Processing
类已经扩展了
PApplet
,因此删除此行
PApplet p=new PApplet()并将其替换为
处理p=this或代替
新屏幕(新向量2(0,0),p)
您可以像这样使用
this
关键字:
新建屏幕(新向量2(0,0),this)-谢谢@sorifiend

注意:您正在创建多个
PApplet
实例,这将使您的代码混乱,并且会遇到错误。
Processing
类已经扩展了
PApplet
,因此删除此行
PApplet p=new PApplet()并将其替换为
处理p=this或代替
新屏幕(新向量2(0,0),p)
您可以使用
this
关键字,如so
new屏幕(new Vector2(0,0),this)