Java错误:无法在Eclipse中强制转换为java.applet.Applet

时间:2016-01-11 07:48:12

标签: java eclipse applet processing

所以这里是非常简单的代码,不能在Eclipse中编译:

import processing.core.*;

public class MyPApplet extends PApplet {
}

我试图将其作为Java Applet运行,但是我收到错误:

java.lang.ClassCastException: MyPApplet cannot be cast to java.applet.Applet

问题是PAppletprocessing包中的一个类,它扩展了java.applet.AppletMyPApplet扩展了PApplet,但我仍然遇到此错误。这没有道理。为什么不能MyPApplet投放java.applet.Applet

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

就像乔治所说的那样,PApplet从处理3开始不再延伸Applet

但是,我建议使用runSketch()函数来运行草图,而不是回到旧版本的Processing:

public class MyPapplet extends PApplet {

  public static void main(String... args){
    String[] pArgs = {"MyPapplet "};
    MyPapplet mp = new MyPapplet ();
    PApplet.runSketch(pArgs, mp);
  }

  public void settings() {
    size(200, 100);
  }
  public void draw() {
    background(255);
    fill(0);
    ellipse(100, 50, 10, 10);
  }
}

如果您确实需要访问底层本机组件,则必须编写依赖于您正在使用的渲染器的代码。以下是使用默认渲染器的方法:

PSurfaceAWT awtSurface = (PSurfaceAWT)mp.surface;
PSurfaceAWT.SmoothCanvas smoothCanvas = (PSurfaceAWT.SmoothCanvas)awtSurface.getNative();

但是对于大多数人来说,第一种方法应该足够好了,所以先尝试一下。

答案 1 :(得分:1)

在Processing 3.x中,PApplet不再扩展Applet:

  

Applet已经消失 - Java的java.awt.Applet不再是PApplet使用的基类,因此任何使用Applet特定方法的草图(或者假设PApplet是Java AWT Component对象) )需要重写。

来自github repo wiki页面Changes in 3.0

如果您需要applet功能,请使用旧版本(2.2.1或更早版本)。

答案 2 :(得分:0)

以下是Eclipse中Processing 3.x程序的模板。但是,您应该将它们作为“Java Application”运行,而不是“Java Applet”:

import processing.core.PApplet;

public class P5Template extends PApplet {

    public void settings() {

        size(512, 200);
    }

    public void setup() {

    }

    public void draw() {

        background(0, 30, 0);
    }

    public static void main(String[] args) {

        PApplet.main(new String[] { P5Template.class.getName() });
    }
}