处理中的新窗口

Posted

技术标签:

【中文标题】处理中的新窗口【英文标题】:New window in Processing 【发布时间】:2015-11-21 11:28:39 【问题描述】:

昨天我发现以下代码用于在处理中创建第二个窗口

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() 方法已弃用。

【问题讨论】:

PApplet 不再扩展 Applet,因此不能再将其视为组件。 【参考方案1】:

首先,那个代码不是很好。我很惊讶它在处理 2 中工作,更不用说处理 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);
  

上述方法对我有用,尽管这种方法看起来很老套。如果你真的想在你的草图中有两个窗口,你最好创建一个生成两个草图的 Java 应用程序。

【讨论】:

【参考方案2】:

处理 3 已更改,因此它不再依赖 AWT,从而提供更大的灵活性,但会破坏依赖它的代码(如 JFrames 等)。新的方法是使用 PSurfaces,但目前缺乏文档和示例。处理 3 的这一部分正在积极开发中,因此您必须稍等片刻。

【讨论】:

以上是关于处理中的新窗口的主要内容,如果未能解决你的问题,请参考以下文章

需要在 javascript 中为选项卡窗口和 Internet Explorer 中的新窗口提供唯一 ID [重复]

如何在java脚本中打开Chrome中的新选项卡而不是新窗口

带有路由器模式哈希的 Electron vuejs 应用程序的新窗口

用window.open打开的新窗口如何居中弹出

创建一个即使在全屏模式下也保持在顶部的新窗口(Linux 上的 Qt)

需要在 ie8 的新标签中打开链接!