如何在Processing中创建单个草图的多个窗口?
我想在Processing中只使用一个草图来创建两个窗口。
我想要做的是,如果我在一个窗口中单击一个按钮,那么一些图像将出现在另一个窗口中。
我搜索了谷歌并找到了一些例子。 实际上,我在这个’堆栈溢出网’中发现了同样的问题。 这是链接。
在处理 http://forum.processing.org/one/topic/multiple-windows-2-4-2011.html中 创建单个草图的多个窗口
这是第二个链接的代码。
import java.awt.Frame; PFrame f; secondApplet s; //f = new PFrame(); void setup() { size(320, 240); f = new PFrame(); } void draw() { background(255,0,0); fill(255); rect(10,10,frameCount%0,10); s.background(0, 0, 255); s.fill(100); s.rect(10,20,frameCount%0,10); s.redraw(); } public class PFrame extends Frame{ public PFrame() { setBounds(100,100,400,300); s = new secondApplet(); add(s); s.init(); show(); } } public class secondApplet extends PApplet { public void setup() { size(400, 300); noLoop(); } public void draw() { } }
但是,当我运行此代码时,我在添加时收到以下错误消息;
类型Container中的方法add(Component)不适用于参数(multi_window_test.secondApplet)
第一个链接的第一个注释的代码是类似的,但是当我运行此代码时,我得到相同的错误消息。
我发现的其他示例代码都是相似的。 它们都创建了扩展PApplet的PFrame类和secondApplet。 他们说这些代码运行良好,但我无法运行这些代码。
我找不到我的错误消息的原因。 除了我之外,运行此示例代码时,其他人似乎没有问题。 如果有人知道解决方案,请帮助我。
此外,如果还有一种简单的方法可以在一个草图中创建多窗口,请告诉我。
错误消息的原因非常明显: add()
函数需要一个Component
,而PApplet
不是一个Component
。 这是因为从处理3开始, PApplet
不再扩展Applet
,因此将其用作Component
旧代码将不再起作用。
相反,请考虑我对这个问题的回答 。 基本上,只需创建一个扩展第二个窗口的PApplet
的类,然后使用第二个PApplet
作为参数调用PApplet.runSketch()
:
void setup() { size(100, 100); String[] args = {"TwoFrameTest"}; SecondApplet sa = new SecondApplet(); PApplet.runSketch(args, sa); } void draw() { background(0); ellipse(50, 50, 10, 10); } public class SecondApplet extends PApplet { public void settings() { size(200, 100); } public void draw() { background(255); fill(0); ellipse(100, 50, 10, 10); } }