2015-08-27 70 views
1

昨天我发现下面的代码创建的加工在处理新窗口

import javax.swing.JFrame; 

PFrame f; 
secondApplet s; 

void setup() { 
size(600, 340); 

} 

void draw() { 
background(255, 0, 0); 
fill(255); 
}  

void mousePressed(){ 

PFrame f = new PFrame(); 
} 

public class secondApplet extends PApplet { 

public void setup() { 
    size(600, 900); 
    noLoop(); 
} 
public void draw() { 
    fill(0); 
    ellipse(400, 60, 20, 20); 
} 
} 
public class PFrame extends JFrame { 
    public PFrame() { 
    setBounds(0, 0, 600, 340); 
    s = new secondApplet(); 
    add(s); 
    s.init(); 
    println("birh"); 
    show(); 
    } 
} 

和编辑第二个窗口...

void mousePressed(){ 

PFrame f = new PFrame(); 
} 

分为:

if(mousePressed && mouseX > 1050 && mouseX < 1350 && mouseY > 700 && mouseY < > 750) { 
    f = new PFrame(); 

    }  
    } 

它的工作可爱,但自从我下载并安装了Processing III后,我得到以下错误:

  • 函数add()需要参数如add(component)
  • 函数init()不存在。
  • 来自类型窗口的方法show()已弃用。
+0

PApplet不再延伸Applet,因此不能再将其视为组件。 –

回答

5

首先,该代码不是很好。我很惊讶它在Processing 2中的工作,更不用说Processing 3了。要对在互联网上随机发现的代码非常谨慎。

话虽这么说,这里的一些代码:

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); 
    } 
} 

上述工作对我来说,虽然方法似乎相当hackish的。如果你真的想在草图中有两个窗口,最好创建一个产生两个草图的Java应用程序。

1

处理3被改变了,所以它不再依赖于AWT,因为它允许更多的灵活性,但是破坏依赖它的代码(如JFrames等)。新的方法是使用PSurfaces,但目前缺乏文档和示例。 Processing 3的这一部分正在积极开发之中,因此您不得不等待一下。