我正在尝试使用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() {
}
}
最佳答案
错误消息的原因很不言自明:add()
函数期望使用Component
,而PApplet
不是Component
。这是因为PApplet
从处理3开始不再扩展Applet
,因此将其用作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);
}
}