如何在不退出整个应用程序的情况下关闭新框架? 单击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); }
}
答案 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()
以防止不必要的计算。