Как создать более одного окна одного эскиза в процессе обработки?
Я хочу создать два окна, используя только один эскиз в обработке.
Я пытаюсь сделать так, что если я нажму кнопку в одном окне, то какое-то изображение появится в другом окне.
Я поискал в 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 ответ:
Причина сообщения об ошибке довольно понятна: функция
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); } }