[英]Jframe not showing anything and "cannot be cast to java.applet.Applet"
[英]Java error: cannot cast to java.applet.Applet in Eclipse
所以这里是非常简单的代码,不能在Eclipse中编译:
import processing.core.*;
public class MyPApplet extends PApplet {
}
我正在尝试将其作为Java Applet运行,但我收到错误:
java.lang.ClassCastException: MyPApplet cannot be cast to java.applet.Applet
问题是PApplet
是一个来自processing
包的类,它扩展了java.applet.Applet
,而MyPApplet
扩展了PApplet
,但我仍然遇到这个错误。 这没有道理。 为什么不能将MyPApplet
为java.applet.Applet
?
有人可以帮忙吗?
就像George说的那样, 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();
但对于大多数人来说,第一种方法应该足够好,所以先尝试一下。
在Processing 3.x中,PApplet不再扩展Applet:
Applet已经消失 - Java的java.awt.Applet不再是PApplet使用的基类,因此需要重写任何使用Applet特定方法(或假设PApplet是Java AWT组件对象)的草图。
来自github repo wiki页面3.0的变化
如果您需要applet功能,请使用旧版本(2.2.1或更早版本)。
以下是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() });
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.