Как создать более одного окна одного эскиза в процессе обработки?


Я хочу создать два окна, используя только один эскиз в обработке.

Я пытаюсь сделать так, что если я нажму кнопку в одном окне, то какое-то изображение появится в другом окне.

Я поискал в Google и нашел несколько примеров. На самом деле, я нашел тот же вопрос в этой "сети переполнения стека". Вот ссылки.

Создание нескольких окон одного эскиза в Обработка 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 (Component) в контейнере типов неприменим для Аргументов (multi_window_test.второе приложение)

Код первого комментария первой ссылки аналогичен, но когда я запускаю этот код, я получите то же самое сообщение об ошибке.

Другие примеры кодов, которые я нашел, все похожи. Все они создают класс PFrame и secondApplet, который расширяет PApplet. Они сказали, что эти коды работают хорошо, но я не могу запустить эти коды.

Я не мог найти причину моего сообщения об ошибке. Другие люди, кажется, не имеют никаких проблем при выполнении этого примера кода, кроме меня. Если кто-то знает решение, Пожалуйста, помогите мне.

Также, если есть другой простой способ создать несколько окон в одном эскизе, пожалуйста, дайте мне знать.

1 2

1 ответ:

Причина сообщения об ошибке довольно понятна: функция add() ожидает Component, а PApplet не является Component. Это происходит потому, что PApplet больше не расширяет Applet с момента обработки 3, поэтому старый код, который использует его как 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);
  }
}