如何在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); } }