multithreading - Problem with delay setText label java -


i have big problem java program. try implement simple software. there label , wanna stamp text in label must separate 2 sec.

i have seen problem thread , swing , implemented code result not change. can me please thanks

 public void stampchips1(int numberdecrement){          actionlistener taskperformer = new actionlistener() {             public void actionperformed(actionevent evt) {                 jlabel1.settext("l'avversario ha deciso di togliere : . ");             }         };         new javax.swing.timer(2000, taskperformer).start();           actionlistener taskperformer2 = new actionlistener() {             public void actionperformed(actionevent evt) {                 jlabel1.settext("l'avversario ha deciso di togliere : . . ");             }         };         new javax.swing.timer(2000, taskperformer2).start();           actionlistener taskperformer3 = new actionlistener() {             public void actionperformed(actionevent evt) {                 jlabel1.settext("l'avversario ha deciso di togliere : . . .");             }         };         new javax.swing.timer(2000, taskperformer3).start();            jlabel1.settext("l'avversario ha deciso di togliere : " + numberdecrement);     } 

every time call javax.swing.timer.start() in code, continue fire events every 2 seconds (as set in constructors). after few intervals, have 3 different timers trying (and succeeding) set text in same label. text of label depend on timer's actionlistener has last finished executing. if want timer fire once , stop should set this:

javax.swing.timer tmr = new javax.swing.timer(2000, taskperformer); tmr.setrepeats(false); tmr.start(); 

now each timer fire once only, eliminating overwriting issues on label.

added per request in comments:

when set each timer, set fire once (and camickr stated), set each timer different interval.

the first timer should be:

javax.swing.timer tmr1 = new javax.swing.timer(2000, taskperformer); tmr1.setrepeats(false); tmr1.start(); 

the second timer should similar: tmr2 = new ... (4000, taskperformer2);
third timer should similar: tmr3 = new ... (6000, taskperformer3);

the problem initial code when stampchips1(int) method executes first sets 3 timers fire events every 2 seconds, , writes label.

time
0s - jlabel1 = "l'avversario ha deciso di togliere : " + numberdecrement
~2s - jlabel1 = "l'avversario ha deciso di togliere : . "
~2s - jlabel1 = "l'avversario ha deciso di togliere : . . "
~2s - jlabel1 = "l'avversario ha deciso di togliere : . . ."
~4s - jlabel1 = "l'avversario ha deciso di togliere : . "
~4s - jlabel1 = "l'avversario ha deciso di togliere : . . "
~4s - jlabel1 = "l'avversario ha deciso di togliere : . . ."

all of timers firing close same time, , won't stop until call timer.stop() or tell fire once timer.setrepeats(false).


Comments

Popular posts from this blog

android - Spacing between the stars of a rating bar? -

html - Instapaper-like algorithm -

c# - How to execute a particular part of code asynchronously in a class -