java - Graphical User Interface, why doesn't my canvas repaint? -


the canvas within graphical user interface not update or repaint on hitting "display" action button should. noticeable when extension drop down box changed , canvas should produce different display upon "display".

would appreciate if point out errors within code. having trouble drawing graphics lines on canvas, appear fill rather draw , think may due canvas repaint error.

thanks, code below

import java.awt.*; import javax.swing.*; import java.awt.event.*; //import event handler classes import java.awt.geom.*; // geom packages  public class listric_gui extends jframe                              implements actionlistener, itemlistener {  jpanel pane = new jpanel (); jcombobox extension; mycanvas can1; //class variables  static float[]x = new float[201];  static float[]y = new float[201];  static float[]y2 = new float[201]; static float[] hwd = new float [201]; //static float dip = 0f; static int end = 200; static int i, e1;       static int x_ending=160, y_ending = 35, ticksize=5; static float x_orig = 50f, y_orig=50f, x_scale=4f, y_scale=5f,hwd_orig=50f,hwd_scale=5f;        listric_gui () {      try{             uimanager.setlookandfeel (             //"com.sun.java.swing.plaf.windows.windowslookandfeel");             uimanager.getsystemlookandfeelclassname());         } catch (exception e) {             system.err.println("can't set , feel: " + e);         }      gridbaglayout gridbag = new gridbaglayout();     gridbagconstraints constraints = new gridbagconstraints();     pane.setlayout(gridbag);     setbackground(color.lightgray);      //title     buildconstraints(constraints, 0,0,5,1,0,10);     constraints.fill = gridbagconstraints.both;     font f = new font ("helvetica", font.bold, 22);     jlabel label1 = new jlabel("fault modelling program", jlabel.center);     label1.setfont (f);     //label1.setbackground(color.white);     label1.setbackground(color.red);     gridbag.setconstraints(label1, constraints);     pane.add(label1);       //initialise button objects     //file         buildconstraints(constraints, 0, 1, 1, 1, 1, 10);         constraints.fill = gridbagconstraints.both;         font f1 = new font("helvetica", font.bold, 14);         jbutton file = new jbutton("file");         gridbag.setconstraints(file, constraints);         file.setfont(f1);         pane.add(file);      //input         buildconstraints(constraints, 1, 1, 1, 1, 1, 0);         constraints.fill = gridbagconstraints.both;         //constraints.ipadx = 10;         jbutton input = new jbutton ("input");         gridbag.setconstraints(input,constraints);         input.setfont(f1);         pane.add(input);      //run         buildconstraints(constraints, 2, 1, 1, 1, 1, 0);         constraints.fill = gridbagconstraints.both;         jbutton run = new jbutton ("run");         gridbag.setconstraints(run, constraints);         run.setfont(f1);         pane.add(run);      //display button         buildconstraints(constraints, 3, 1, 1, 1, 1, 0);         constraints.fill = gridbagconstraints.both;         jbutton display = new jbutton ("display");          gridbag.setconstraints(display, constraints);         display.setfont(f1);         pane.add(display);      //quit button         buildconstraints(constraints, 4, 1, 1, 1, 1, 0);         constraints.fill = gridbagconstraints.both;         jbutton quit = new jbutton ("quit");         gridbag.setconstraints(quit, constraints);         quit.setfont(f1);         pane.add(quit);      //fault geometry label           buildconstraints(constraints, 0, 2, 1, 1, 1, 10);         constraints.fill = gridbagconstraints.none;         constraints.anchor = gridbagconstraints.south;         jlabel label2 = new jlabel ("fault geometry", jlabel.center);         label2.setfont(f1);         gridbag.setconstraints(label2, constraints);         pane.add(label2);      //geometry - listric          buildconstraints(constraints, 0, 3, 1, 1, 1, 10);         constraints.fill = gridbagconstraints.none;         constraints.anchor = gridbagconstraints.north;         jcheckbox c1 = new jcheckbox ("listric");         gridbag.setconstraints(c1, constraints);         pane.add(c1);      //checkbox group define 1 selected @ time         buttongroup bg = new buttongroup ();         bg.add(c1);      //extension label         buildconstraints(constraints, 0, 4, 1, 1, 1, 10);         constraints.anchor = gridbagconstraints.south;         jlabel label3 = new jlabel ("extension", jlabel.center);         label3.setfont(f1);         gridbag.setconstraints(label3, constraints);         pane.add(label3);      //extension choice         buildconstraints(constraints, 0, 5, 1, 1, 1, 10);         constraints.fill = gridbagconstraints.none;         constraints.anchor = gridbagconstraints.north;         jcombobox extension = new jcombobox ();         extension.additem ("-5 km");         extension.additem ("-2 km");         extension.additem ("0 km");         extension.additem ("5 km");         extension.additem ("10 km");         extension.additem ("15 km");         extension.additem ("20 km");         extension.additem ("25 km");         extension.additem ("30 km");         gridbag.setconstraints(extension, constraints);         pane.add(extension);      //draw canvas         buildconstraints(constraints, 1, 2, 4, 5, 0, 0);         constraints.fill = gridbagconstraints.both;         mycanvas can2 = new mycanvas (); // paint method in seperate class         gridbag.setconstraints(can2, constraints);         can2.setbackground(color.white);         pane.add(can2);          //add event listeners components         display.addactionlistener(this);         quit.addactionlistener(this);         extension.addactionlistener(this);          setcontentpane(pane);     } //define main block     public static void main (string args[]){         jframe frame = new listric_gui();         //method exit     windowlistener l = new windowadapter (){                     public void windowclosing (windowevent e) {                         system.exit (0);                     }     };                     frame.addwindowlistener (l);     frame.setsize(1600,600);     //frame.pack();     //frame.revalidate();     //frame.repaint();     frame.setvisible (true); }      static void buildconstraints(gridbagconstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy){         gbc.gridx = gx;         gbc.gridy = gy;         gbc.gridwidth = gw;         gbc.gridheight = gh;         gbc.weightx = wx;         gbc.weighty = wy;     }      public insets getinsets() {         return new insets (10, 10, 10, 10);     }  //declare actionlistener method public void actionperformed (actionevent ae) {         string label = ae.getactioncommand();         if (label == "display") {             modelling m1 = new modelling ();             can1= new mycanvas();             pane.add(can1);             setcontentpane(pane);             }else if (label == "quit")             system.exit(0);     }    public void itemstatechanged (itemevent evt) {         if(evt.getsource () == extension) {             string s = (string) evt.getitem ();             if (s == "-5 km")                e1 = (int) -5f;             if (s == "-2 km")                e1 = (int) -2f;            if (s == "0 km")                e1 = (int) 0f;            else if (s == "5 km")                e1 = (int) 5f;            else if (s == "10 km")                e1 = (int) 10f;            else if (s == "15 km")                e1 = (int) 15f;            else if (s == "20 km")                e1 = (int) 20f;            else if (s == "25 km")                e1 = (int) 25f;            else if (s == "30 km")                e1 = (int) 30f;         }     }  //end of controlling class //class modelling fault class modelling { modelling () {     calc (); } private void calc () {     float sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8;//initialise variables     float = 30f; float b = 50f; float c = -1f; float zd = 20f; //float x0 = 60f; float d = 1f;     int k;         //loop calculating fault 1 coordinates         for(k=0;k<=listric_gui.x_ending;k++){            listric_gui.x[k] = (float) k;         sum1 = (listric_gui.x[k] - a);         sum2 = ((sum1/zd)*c);         sum3 = d - ((float)math.exp(sum2));         sum4 = (a * sum3);                     listric_gui.y[k] = sum4;          if(listric_gui.x[k]<=30)             listric_gui.y[k]=0;          sum1 = (listric_gui.x[k] - b);         sum2 = ((sum1/zd)*c);         sum3 = d - ((float)math.exp(sum2));         sum4 = (a * sum3);                     listric_gui.y2[k] = sum4;          if(listric_gui.x[k]<=50)             listric_gui.y2[k]=0;           system.out.println("x = " + listric_gui.x[k] + " y = "+ listric_gui.y[k] + "y2 = " + listric_gui.y2[k]);         }         //loop calculating hangingwall deformation          //initialise variables          listric_gui.hwd [k] = (float) k;         listric_gui.e1 = 30;         for(k=0;k<=listric_gui.x_ending;k++){         listric_gui.hwd[k] = 0f;         if(listric_gui.x[k]>30)              listric_gui.hwd[k] = listric_gui.y[k]-listric_gui.y[k-listric_gui.e1]; //system.out.println("x = " + x[k] + " hwd = "+ hwd [k]); }         //fault 2 loop          /*for(k=0;k<=listric_gui.x_ending;k++){            //listric_gui.x[k] = (float) k;         listric_gui.y2[k] = (b * (d - ((float)math.exp((((listric_gui.x[k] - b)/zd)*c)))));          if(listric_gui.x[k]<=50) {            listric_gui.y2[k]=0;         }         system.out.println("f2x = " + listric_gui.y2[k]);*/  } }  //listener method //draw class class mycanvas extends jpanel { int k, i;     public void paintcomponent (graphics screen) {         super.paintcomponent(screen);         graphics2d screen2d = (graphics2d) screen;      screen2d.setcolor(color.red);     generalpath ln = new generalpath();     ln.moveto(listric_gui.x_orig,listric_gui.y_orig);     for(k=0;k<=listric_gui.x_ending;k++) {     ln.lineto((listric_gui.x[k]*listric_gui.x_scale)+listric_gui.x_orig,(listric_gui.y_orig+(listric_gui.y[k]*listric_gui.y_scale)));     ln.closepath();     screen2d.fill(ln);     }     generalpath ln2 = new generalpath();     ln2.moveto(listric_gui.x_orig,listric_gui.hwd_orig);     for(k=0;k<=listric_gui.x_ending;k++) {     ln2.lineto((listric_gui.x[k]*listric_gui.x_scale)+listric_gui.x_orig,(listric_gui.y_orig+(listric_gui.hwd[k]*listric_gui.hwd_scale)));     ln2.closepath();     screen2d.fill(ln2);      }      /*generalpath ln5 = new generalpath();     ln5.moveto(listric_gui.x_orig,listric_gui.hwd_orig);      for(k=0;k<=listric_gui.x_ending;k++) {     ln5.lineto((listric_gui.x[k]*listric_gui.x_scale)+listric_gui.x_orig,(listric_gui.y_orig+(listric_gui.y2[k]*listric_gui.hwd_scale)));     ln5.closepath();     //screen2d.fill(ln5);     screen2d.draw(ln5);     }*/     //fault profile graphically   //x axis basicstroke xpen = new basicstroke(2f, basicstroke.cap_butt,basicstroke.join_round); screen2d.setstroke(xpen); screen2d.setfont(new font("serif", font.plain, 11)); screen2d.setcolor(color.black); generalpath xaxis = new generalpath(); xaxis.moveto(listric_gui.x_orig,(listric_gui.y_orig+(listric_gui.y_ending*listric_gui.y_scale))); xaxis.lineto((listric_gui.x_orig+(listric_gui.x_ending*listric_gui.x_scale)),(listric_gui.y_orig+(listric_gui.y_ending*listric_gui.y_scale))); (i=0; <=(listric_gui.x_ending); i=i+20){         line2d.float ticks = new line2d.float(((i*listric_gui.x_scale)+listric_gui.x_orig), ((listric_gui.y_orig)+(listric_gui.y_ending*listric_gui.y_scale)), ((i*listric_gui.x_scale)+listric_gui.x_orig), ((listric_gui.y_orig+listric_gui.ticksize)+(listric_gui.y_ending*listric_gui.y_scale)));     screen2d.draw(ticks);     screen2d.drawstring(""+i, ((i*listric_gui.x_scale)+listric_gui.x_orig), ((listric_gui.y_orig)+(listric_gui.y_ending*listric_gui.y_scale))+20); }  //y axis basicstroke ypen = new basicstroke(2f, basicstroke.cap_butt,basicstroke.join_round); screen2d.setstroke(ypen); screen2d.setfont(new font("serif", font.plain, 11)); screen2d.setcolor(color.black); generalpath yaxis = new generalpath(); yaxis.moveto(listric_gui.x_orig,listric_gui.y_orig); yaxis.lineto(listric_gui.x_orig,(listric_gui.y_orig+(listric_gui.y_ending*listric_gui.y_scale))); screen2d.draw(yaxis); (i=0; <=listric_gui.y_ending; i=i+5){       screen2d.drawstring(""+i, ((listric_gui.x_orig))-15, (listric_gui.y_orig+(i*listric_gui.y_scale)));     line2d.float yticks = new line2d.float(((listric_gui.x_orig)), (listric_gui.y_orig+(i*listric_gui.y_scale)), (((listric_gui.x_orig+listric_gui.ticksize))), (listric_gui.y_orig+(i*listric_gui.y_scale)));     screen2d.draw(yticks);     }  //y axis label screen2d.setfont(new font("serif", font.plain, 14)); screen2d.draw(xaxis); affinetransform orig = screen2d.gettransform();  screen2d.drawstring("depth(km)", listric_gui.x_orig-20, listric_gui.y_orig-20); screen2d.rotate(-math.pi/2); screen2d.settransform(orig);  //x axis label screen2d.setfont(new font("serif", font.plain, 14)); screen2d.drawstring("distance (km)", listric_gui.x_orig+(listric_gui.x_ending*listric_gui.x_scale/2), listric_gui.y_orig+(listric_gui.y_ending*listric_gui.y_scale)+40);  //values screen2d.setfont(new font("serif", font.plain, 10)); screen2d.setcolor(color.red); int y_val = 25; (k = 0; k <=160; k=k+5){     screen2d.drawstring(" x = " + string.valueof(listric_gui.x[k]) + " y = " + string.valueof(listric_gui.y[k]), (listric_gui.x_orig+(listric_gui.x_ending*listric_gui.x_scale)+35), y_val);     y_val = y_val+10; } //print screen hwd values int y_val2 = 25; (k = 0; k <=160; k=k+5){     screen2d.drawstring("x = " + string.valueof(listric_gui.x [k])+ " hwd = " + string.valueof(listric_gui.hwd[k]),(listric_gui.x_orig+(listric_gui.x_ending*listric_gui.x_scale)+155),y_val2);     y_val2 = y_val2+10; } //title screen2d.setcolor(color.black); font f1 = new font("helvetica", font.bold, 24); screen2d.setfont(f1); screen2d.drawstring("listric fault", (listric_gui.x_ending*listric_gui.x_scale/2)+listric_gui.x_orig,(listric_gui.y_orig-10)); }      } } 


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -