java - Having troubles making a second thread -


i trying make small programm clicks left mouse button in intervall, time. problem can't solve able stop loop whenever want, before timer runs out. have found out 1 should run loop in worker thread, , stop button should interrupt thread somehow, can't manage it. hope can me code.

import java.awt.awtexception; import java.awt.robot; import java.awt.event.*; import java.util.logging.level; import java.util.logging.logger;      import javax.swing.*;  public class keyrepeater_v2 extends javax.swing.jframe {  robot robot;  boolean stop; double time; double time_milli;   public keyrepeater_v2() throws awtexception {     this.robot = new robot();     initcomponents(); }  /**  * method called within constructor initialize form.  * warning: not modify code. content of method  * regenerated form editor.  */ @suppresswarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="generated code">                           private void initcomponents() {      jbutton1 = new javax.swing.jbutton();     jbutton2 = new javax.swing.jbutton();     jtextfield1 = new javax.swing.jtextfield();     jlabel1 = new javax.swing.jlabel();      setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close);      jbutton1.settext("start");     jbutton1.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             jbutton1actionperformed(evt);         }     });      jbutton2.settext("stop");     jbutton2.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             jbutton2actionperformed(evt);         }     });      jtextfield1.addactionlistener(new java.awt.event.actionlistener() {         public void actionperformed(java.awt.event.actionevent evt) {             jtextfield1actionperformed(evt);         }     });      jlabel1.settext("timer");      javax.swing.grouplayout layout = new javax.swing.grouplayout(getcontentpane());     getcontentpane().setlayout(layout);     layout.sethorizontalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(javax.swing.grouplayout.alignment.trailing, layout.createsequentialgroup()             .addcontainergap(javax.swing.grouplayout.default_size, short.max_value)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)                 .addgroup(layout.createsequentialgroup()                     .addcomponent(jtextfield1, javax.swing.grouplayout.preferred_size, 137, javax.swing.grouplayout.preferred_size)                     .addgap(18, 18, 18)                     .addcomponent(jbutton1)                     .addgap(18, 18, 18)                     .addcomponent(jbutton2, javax.swing.grouplayout.preferred_size, 57, javax.swing.grouplayout.preferred_size))                 .addcomponent(jlabel1))             .addcontainergap())     );     layout.setverticalgroup(         layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)         .addgroup(javax.swing.grouplayout.alignment.trailing, layout.createsequentialgroup()             .addgap(41, 41, 41)             .addcomponent(jlabel1, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value)             .addpreferredgap(javax.swing.layoutstyle.componentplacement.related)             .addgroup(layout.createparallelgroup(javax.swing.grouplayout.alignment.leading)                 .addcomponent(jbutton2, javax.swing.grouplayout.alignment.trailing, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value)                 .addcomponent(jtextfield1, javax.swing.grouplayout.alignment.trailing)                 .addcomponent(jbutton1, javax.swing.grouplayout.alignment.trailing, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value))             .addcontainergap())     );      pack(); }// </editor-fold>                           private void jbutton2actionperformed(java.awt.event.actionevent evt) {                                              stop = true;     //setfocusable (true);     //joptionpane.showmessagedialog(null, stop, "test titel", joptionpane.ok_cancel_option); }                                           private void jbutton1actionperformed(java.awt.event.actionevent evt) {                                              stop = false;     robot.delay(5000); //in milliseconds      {             leftclick();             robot.delay(1500);             time_milli = time_milli - 1700;     } while (time_milli > 0);  }                                            private void jtextfield1actionperformed(java.awt.event.actionevent evt) {                                                 time = double.parsedouble(jtextfield1.gettext());      //system.out.print(time);     time_milli = time * 1000; }                                                /**  * @param args command line arguments  */ public static void main(string args[]) throws awtexception {     /* set nimbus , feel */     //<editor-fold defaultstate="collapsed" desc=" , feel setting code (optional) ">     /* if nimbus (introduced in java se 6) not available, stay default , feel.      * details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html       */     try {         (javax.swing.uimanager.lookandfeelinfo info : javax.swing.uimanager.getinstalledlookandfeels()) {             if ("nimbus".equals(info.getname())) {                 javax.swing.uimanager.setlookandfeel(info.getclassname());                 break;             }         }     } catch (classnotfoundexception ex) {         java.util.logging.logger.getlogger(keyrepeater_v2.class.getname()).log(java.util.logging.level.severe, null, ex);     } catch (instantiationexception ex) {         java.util.logging.logger.getlogger(keyrepeater_v2.class.getname()).log(java.util.logging.level.severe, null, ex);     } catch (illegalaccessexception ex) {         java.util.logging.logger.getlogger(keyrepeater_v2.class.getname()).log(java.util.logging.level.severe, null, ex);     } catch (javax.swing.unsupportedlookandfeelexception ex) {         java.util.logging.logger.getlogger(keyrepeater_v2.class.getname()).log(java.util.logging.level.severe, null, ex);     }     //</editor-fold>      /* create , display form */     java.awt.eventqueue.invokelater(() -> {         try {             new keyrepeater_v2().setvisible(true);         } catch (awtexception ex) {             logger.getlogger(keyrepeater_v2.class.getname()).log(level.severe, null, ex);         }     });  }   private void leftclick() {     robot.mousepress(inputevent.button1_mask);     robot.delay(100);     robot.mouserelease(inputevent.button1_mask);     robot.delay(100); }   // variables declaration - not modify                      private javax.swing.jbutton jbutton1; private javax.swing.jbutton jbutton2; private javax.swing.jlabel jlabel1; private javax.swing.jtextfield jtextfield1; // end of variables declaration                    

}

quite code generated netbeans... don't know how make new thread, , don't know how make textfield (for timer) , buttons communicate thread either..... hope can me :d

you want @ timers. basically, it's here facilitate usage of threading. didn't want modify code provide sample replaces while loop using (it's official timer's javadoc).

actionlistener taskperformer = new actionlistener() {             public void actionperformed(actionevent evt) {                 {                     system.out.println("left click");                     leftclick();                     robot.delay(1500);                     time_milli = time_milli - 1700;                 } while (time_milli > 0);             }          };         new timer(5000, taskperformer).start(); 

please note explicitely left console print check called on action performed every 5 secondes ; timers keeps gui being freezed when click on start button more user-friendly.


Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -