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
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