java - Is loop is getting stuck somewhere? -
my code wont execute way want. put println
statements throughout actionperformed class , think getting stuck @ end of foe loop because goes through if statement once. there huge i'm overlooking, can see whats wrong?
import java.awt.eventqueue; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.random; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jprogressbar; import javax.swing.swingconstants; import javax.swing.uimanager; import javax.swing.border.emptyborder; public class frame extends jframe implements actionlistener{ public jpanel contentpane; public int yesnum, nonum; public jprogressbar progressbar; // ######### config ########## public int gennum = 100_000; //edit gennum change number of tries /** * launch application. */ public static void main(string[] args) { try { uimanager.setlookandfeel("com.apple.laf.aqualookandfeel"); } catch (throwable e) { e.printstacktrace(); } eventqueue.invokelater(new runnable() { public void run() { try { frame frame = new frame(); frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } }); } /** * create frame. */ public frame() { setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 300, 195); contentpane = new jpanel(); contentpane.setborder(new emptyborder(5, 5, 5, 5)); setcontentpane(contentpane); contentpane.setlayout(null); jlabel lab = new jlabel("click generate " + gennum + " times"); lab.sethorizontalalignment(swingconstants.center); lab.setbounds(5, 5, 289, 16); contentpane.add(lab); jbutton b = new jbutton("generate"); b.seticon(new imageicon("/users/colby/desktop/checl.png")); b.setactioncommand("generate"); b.setbounds(80, 33, 139, 36); contentpane.add(b); jlabel yeslab = new jlabel("yes number: " + yesnum); yeslab.setbounds(22, 81, 117, 16); contentpane.add(yeslab); jlabel nolab = new jlabel("no number: " + nonum); nolab.setbounds(22, 109, 117, 16); contentpane.add(nolab); progressbar = new jprogressbar(); progressbar.setstringpainted(true); progressbar.setbounds(5, 141, 289, 20); progressbar.setmaximum(gennum); contentpane.add(progressbar); b.addactionlistener(this); } public void actionperformed(actionevent e){ random rand = new random(); int num = rand.nextint(1); int yescounter = 0; int nocounter = 0; for(int counter = 1; counter < 100_000;){ if(num == 0){ system.out.println("testing yes"); yescounter++; system.out.println(counter+ ": yes"); progressbar.setvalue(counter); } else if(num == 1){ system.out.println("testing no"); nocounter++; system.out.println(counter+ ": no"); progressbar.setvalue(counter); } num = rand.nextint(); } yescounter = yesnum; nocounter = nonum; } }
for(int counter = 1; counter < 100_000; ) ^^^
you missing iteration step, should increment counter
there (++counter
).
in addition long blocking task yours shouldn't executed in edt, should have it's own thread
, since working gui.
Comments
Post a Comment