Processing second PApplet window does not update when method is invoked

171 Views Asked by At

I have the following code which allows to have two windows, in the main window when the 'k' key is pressed, must call the function disegna() of Graph and add the text.

But it seems not to work properly, no draw update occurs.

Can you give me a hand?

enter image description here

int N = 500;
boolean flag = false;
Grafico graph = new Grafico(N, N);

void settings() {
  size(N, N);
}

void setup() {
  surface.setTitle("Grafico1");
  surface.setLocation(0, 0);

  String[] args = {
    "--location=" + (N*2) + ",0", 
    "Grafico2"
  };
  PApplet.runSketch(args, graph);
  grafico();
}

void grafico() {
  background(0);
  text("Main", 10, 20);
}

void keyPressed() {
  switch (key) {
  case 'k':
    graph.disegna();
    break;
  }
}

void draw() {
  if (!flag) {
    frame.setLocation(0, 0);
    flag = true;
  }
}

public class Grafico extends PApplet {
  private final int w, h;

  public Grafico(int w, int h) {
    this.w = w;
    this.h = h;
  }
  
  void settings () {
    size(w, h);
  }
  
  void setup() {
    ini();
  }

  void ini() {
    background(0);
    text("Second", 10, 20);
  }
  
  void disegna() {
     text("Hello!", 10, 50);
     println("Hello!");
  }
  
  void draw() {
  }
}
1

There are 1 best solutions below

1
On

Adding a small delay(10) in draw() loop of Grafico PApplet makes it work!

public class Grafico extends PApplet {
  private final int w, h;

  public Grafico(int w, int h) {
    this.w = w;
    this.h = h;
  }
  
  void settings () {
    size(w, h);
  }
  
  void setup() {
    ini();
  }

  void ini() {
    background(0);
    text("Second", 10, 20);
  }
  
  void disegna() {
     text("Hello!", 10, 50);
     println("Hello!");
  }
  
  void draw() {
    delay(10);
  }
}

enter image description here