我想在处理中仅使用一个草图来创建两个窗口。
我想做的是,如果我单击一个窗口中的按钮,则某些图像会出现在另一个窗口中。
我在 Google 上搜索并找到了一些示例。实际上,我在这个“堆栈溢出网络”中发现了同样的问题。这是链接。
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)
第一个链接的第一个评论的代码类似,但是当我运行此代码时,我收到相同的错误消息。
我找到的其他示例代码都是类似的。他们都创建了 PFrame 类和扩展 PApplet 的第二个Applet。他们说这些代码运行良好,但我无法运行这些代码。
我找不到错误消息的原因。除了我之外,其他人在运行此示例代码时似乎没有问题。 如果有人知道解决方案,请帮助我。
此外,如果还有其他简单的方法可以在一个草图中创建多个窗口,请告诉我。
最佳答案
错误消息的原因非常不言自明:add()
函数期待 Component
,和PApplet
不是Component
。这是因为PApplet
不再延伸 Applet
从处理 3 开始,使用它作为 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);
}
}
关于java - 如何在处理中创建单个草图的多个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798606/