有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java关闭附加窗口(PApplet)

如何在不退出整个应用程序的情况下关闭新框架? 点击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) 个答案

  1. # 1 楼答案

    注意:你的问题实际上与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()以避免不必要的计算