java - How to call JChart2D dynamic graph using another JFrame -


i'm using jchart2d (http://jchart2d.sourceforge.net/index.shtml) trace values of double array dynamically. when code configuration in main method , run it run perfectly.

enter image description here

here code.

public  class wavetracer {      itrace2d trace ;     chart2d chart ;     double dataarray [];     jframe frame;  public wavetracer(int limit , double [] data){  trace = new trace2dltd(limit);      dataarray = data;  }  public void configure(string framename, int fwidth , int fheight, int xpos , int ypos ){     try{      chart = new chart2d();      trace.setcolor(color.red);      frame = new jframe(framename);      frame.addwindowlistener(new windowadapter() {         /**          * @see java.awt.event.windowadapter#windowclosing(java.awt.event.windowevent)          */          @override          public void windowclosing(final windowevent e) {            system.exit(0);          }        });        frame.getcontentpane().add(chart);        frame.setsize(fwidth, fheight);        frame.setlocation(xpos, ypos);      }catch (throwable f) {       system.exit(0);     } }  public void trace(int speed) throws interruptedexception{      frame.setvisible(true);      chart.addtrace(trace);          (int j = 0; j < dataarray.length; j++) {            trace.addpoint(j,dataarray[j]);            thread.sleep(speed);           }      system.exit(0);  }  public static void main(string args []){        random random = new random();      double d[] = new double[2000];      int count=1;      for(int i=200;i>=0;i--){        d[200-i] = random.nextdouble()*10.0;      }           wavetracer wavetracer = new wavetracer(5000, d);           wavetracer.configure("plying wave form time", 1000, 500, 200, 200);          try {              wavetracer.trace(150);          } catch (interruptedexception ex) {              logger.getlogger(frequencyditectorform.class.getname()).log(level.severe, null, ex);         }  }  } 

but need draw graph when click on "draw" button in in form. created form contains button "draw" , added following code action click.

 jframe dialog = new jframe();   random random = new random();      double d[] = new double[2000];      int count=1;      for(int i=200;i>=0;i--){        d[200-i] = random.nextdouble()*10.0;      }  wavetracer wavetracer = new wavetracer(5000, d);           wavetracer.configure("plying wave form time", 1000, 500, 200, 200);          try {              wavetracer.trace(150);         } catch (interruptedexception ex) {             logger.getlogger(frequencyditectorform.class.getname()).log(level.severe, null, ex);         }  

enter image description here

but when click on button new frame loads , shows nothing in frame. have tested loop adding messagebox loop. in case show graph each iteration of loop.

enter image description here

can 1 please me on issue. how can draw graph separate form without triggering messagebox in every cycle of loop.

you're calling thread.sleep(...) on event dispatch thread or edt, main swing thread responsible drawing , user interaction, , putting whole gui sleep. don't this, instead use swing timer or background thread.

also, design question: sure want display in separate jframe , not jpanel or if need separate window, jdialog? , sure want call system.exit(0) within graphing class?


Comments