【问题标题】:How to open multiple windows with Processing?如何使用处理打开多个窗口?
【发布时间】:2016-01-04 03:20:42
【问题描述】:

我正在尝试使用 Processing 创建两个窗口。在将此标记为重复之前,由于还有其他类似的问题,我有一个特定的错误,我找不到解决方案。当我尝试add(s) 时,我收到错误The method add(Component) in the type Container is not applicable for the arguments (evolution_simulator.SecondApplet)

我不确定如何解决此问题,如果有任何帮助,我们将不胜感激。代码如下:

import javax.swing.*;

PFrame f;

void setup() {
    size(320, 240);
    f = new PFrame();
}

void draw() {

}

public class PFrame extends JFrame {

    SecondApplet s;

    public PFrame() {
        setBounds(100,100,400,300);
        s = new SecondApplet();
        add(s);  // error occurs here
        s.init();
        show();
    }
}

public class SecondApplet extends PApplet {

    public void setup() {
        size(400, 300);
        noLoop();
    }

    public void draw() {

    }
}

【问题讨论】:

标签: java image swing processing


【解决方案1】:

错误消息的原因是因为add() 函数需要Component,而PApplet 不是Component。这是因为 PApplet 在处理 3 中不再扩展 Applet,因此将其用作 Component 的旧代码将不再工作。

相反,您可以为第二个窗口创建一个扩展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);
  }
}

【讨论】:

  • 嗨,它的工作很棒!但是当我单击第一个窗口时,我试图重新绘制我的 SecondApplet,我得到了全局:SecondApplet sa;在我的设置中我这样做: sa = new SecondApplet();最后我尝试这个: void mouseClicked() { print("clicked"); sa.background(0, 0, 255); sa.fill(100); sa.redraw(); } 但它实际上并没有改变我的 SecondApplet,你知道为什么吗?
  • @LoganGallois 如果您有后续问题,将其发布在自己的问题中会更好。
  • 好的 ;) 我会发布一个问题 ;)
猜你喜欢
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多