gpt4 book ai didi

java - 如何在 Processing 中为单个草图创建多个窗口?

转载 作者:行者123 更新时间:2023-11-30 06:58:19 24 4
gpt4 key购买 nike

我想在 Processing 中仅使用一个草图创建两个窗口。

我想做的是,如果我在一个窗口中单击一个按钮,那么一些图像会出现在另一个窗口中。

我搜索了 Google 并找到了一些示例。实际上,我在这个“stack overflow web”中发现了同样的问题。这是链接。

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 的 secondApplet。他们说这些代码运行良好,但我无法运行这些代码。

我找不到错误消息的原因。除了我之外,其他人在运行此示例代码时似乎没有问题。如果有人知道解决方案,请帮助我。

此外,如果有其他简单的方法可以在一个草图中创建多窗口,请告诉我。

最佳答案

错误消息的原因很明显:add() 函数需要一个 Component,而 PApplet 不是一个组件。这是因为从 Processing 3 开始,PApplet 不再扩展 Applet,因此将它用作 Component 的旧代码将不再有效。

相反,请考虑我对 this question 的回答.基本上,只需为第二个窗口创建一个扩展 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);
}
}

关于java - 如何在 Processing 中为单个草图创建多个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com