2

我想通过在处理中仅使用一个草图来创建两个窗口。

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

我搜索了谷歌并找到了一些例子。实际上,我在这个“堆栈溢出网络”中发现了同样的问题。这是链接。

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

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

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

4

1 回答 1

4

错误消息的原因是不言自明的:该add()函数需要 a Component,而PApplet不是 a Component。这是因为从处理 3 开始PApplet不再扩展Applet,因此将其用作 a 的旧代码Component将不再工作。

相反,请考虑我对这个问题的回答。基本上,只需创建一个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);
  }
}
于 2015-09-26T15:24:22.133 回答