Closing One Window and Opening Another

Hi there,
I'm simply trying to run a program where I need to completely close one window/papplet and open a new one after an action has been made by the user (e.g. mousePressed). I need something that actually closes the class and opens the new one, not just some code like:
window.getSurface().setVisible(false);
Any help or guidance would be greatly appreciated!

Hi,

When you run your code in Processing or export it as a standalone app, it is wrapped into a PApplet class with a main function that runs your code.

For example :

void setup() {
  size(500, 500);
}

void draw() {
  background(255);
  circle(mouseX, mouseY, 50);
}

Becomes :

import processing.core.PApplet;

public class test_app_export extends PApplet {
  public void setup() {}
  
  public void draw() {
    background(255);
    circle(this.mouseX, this.mouseY, 50.0F);
  }
  
  public void settings() {
    size(500, 500);
  }
  
  public static void main(String[] passedArgs) {
    String[] appletArgs = { "test_app_export" };
    if (passedArgs != null) {
      PApplet.main(concat(appletArgs, passedArgs));
    } else {
      PApplet.main(appletArgs);
    } 
  }
}

So closing the PApplet means closing your application :wink:

One solution is to run another PApplet instance as described here :

But when closing one window, it closes the others. Luckily for us, micycle provided a nice workaround :

You can also stop the main PApplet instance and restart it but you’ll loose memory (you can always save it to a file) :

1 Like