关闭其他窗口(PApplet)

时间:2016-09-07 10:14:48

标签: java processing

如何在不退出整个应用程序的情况下关闭新框架? 单击X按钮,最简单的方法是什么。 提前谢谢。

ControlFrame cf;
void setup()
{
 cf = new ControlFrame(this,500,500, "cf name"); 
}

class ControlFrame extends PApplet
{
   int w,h;
   PApplet parent;

  public ControlFrame(PApplet _parent, int _w, int _h, String _name)
    {
    super();
    parent=_parent; w=_w; h=_h;
    PApplet.runSketch(new String[]{this.getClass().getName()},this); 
    }
  public void settings()
    { size(w,h); }
}

1 个答案:

答案 0 :(得分:0)

注意:您的问题与ControlP5没有任何关系。

第1步:获取对本机窗口的引用。如何执行此操作取决于您使用的渲染器。如果您使用默认渲染器,它看起来像这样:

Frame frame = ( (SmoothCanvas) ((PSurfaceAWT)surface).getNative()).getFrame();

第2步:然后,您可以在dispose()上调用Frame隐藏它,而无需退出整个应用程序。

frame.dispose();

总而言之,它看起来像这样:

import java.awt.Frame;
import processing.awt.PSurfaceAWT;
import processing.awt.PSurfaceAWT.SmoothCanvas;

ControlFrame cf;
void setup()
{
  cf = new ControlFrame(this, 500, 500, "cf name");
}

class ControlFrame extends PApplet
{
  int w, h;
  PApplet parent;

  public ControlFrame(PApplet _parent, int _w, int _h, String _name)
  {
    super();
    parent=_parent; 
    w=_w; 
    h=_h;
    PApplet.runSketch(new String[]{this.getClass().getName()}, this);

  }
  public void settings()
  { 
    size(w, h);
  }

  public void draw(){
    //needed for mousePressed
    println(millis());
  }

  public void mousePressed(){
    Frame frame = ( (SmoothCanvas) ((PSurfaceAWT)surface).getNative()).getFrame();
    frame.dispose();
  }

}

第3步:请注意,您的第二个草图将继续运行,因此您可能还需要调用noLoop()以防止不必要的计算。