我想在Processing中只使用一个草图来创建两个窗口。
我想要做的是,如果我在一个窗口中单击一个按钮,则会在另一个窗口中显示一些图像。
我搜索过谷歌并找到了一些例子。实际上,我在这个'堆栈溢出网'中发现了同样的问题。这是链接。
Create more than one window of a single sketch in 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() {
}
}
但是当我运行此代码时,我在 add(s) ;得到以下错误消息。
Container类型中的方法add(Component)不适用于参数(multi_window_test.secondApplet)
第一个链接的第一个注释代码类似,但是当我运行此代码时,我收到相同的错误消息。
我发现的其他示例代码都很相似。它们都创建了扩展PApplet的PFrame类和secondApplet。他们说这些代码运行良好,但我无法运行这些代码。
我找不到错误消息的原因。除了我之外,运行此示例代码时,其他人似乎没有问题。 如果有人知道解决方案,请帮助我。
另外,如果还有一种简单的方法可以在一个草图中创建多窗口,请告诉我。
答案 0 :(得分:4)
错误消息的原因非常明显:add()
函数期待Component
,PApplet
不是Component
。这是因为PApplet
从处理3开始不再延伸Applet
,因此将其用作Component
的旧代码将不再有效。
相反,请考虑我对this question的回答。基本上,只需为第二个窗口创建一个扩展PApplet
的类,然后使用第二个PApplet.runSketch()
作为参数调用PApplet
:
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);
}
}