如何在 Processing 中创建多个 window 个草图?

How to create more than one window of a single sketch in Processing?

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

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

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

Create more than one window of a single sketch in Processing http://forum.processing.org/one/topic/multiple-windows-2-4-2011.html

这是第 link 秒的代码。

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)

第一个link的第一个注释的代码是相似的,但是当我运行这段代码时,我得到了相同的错误信息。

我找到的其他示例代码都是类似的。他们都创建了 PFrame class 和扩展 PApplet 的 secondApplet。他们说这些代码很好用,但我不能 运行 这些代码。

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

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

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

相反,请考虑我对 的回答。基本上,只需为第二个 window 创建一个扩展 PApplet 的 class,然后使用第二个 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);
  }
}