java - When I run my autoclicker I can't stop it -


if click on start button can't click or stop. need stop app. 1 way stop app must power off computer :d. when app running, start button locked , can't click on it. click on exit button doesn't work. app simple autoclicker. exist in java better autoclicker robot class? how can fix it? there error anywhere? or there can stop app?

 import java.awt.awtexception;  import java.awt.borderlayout;  import java.awt.eventqueue;  import java.awt.robot;   import javax.swing.jframe;  import javax.swing.jpanel;  import javax.swing.border.emptyborder;  import javax.swing.jcheckbox;  import javax.swing.jlabel;   import java.awt.event.actionlistener;  import java.awt.event.actionevent;  import java.awt.event.keyevent;  import java.awt.event.mouseevent;  import java.awt.color;   public class autoclicker extends jframe {  private jpanel contentpane; private final jlabel m = new jlabel("autoclicker");  /**  * launch application.  */ public static void main(string[] args) {      eventqueue.invokelater(new runnable() {         public void run() {             try {                 autoclicker frame = new autoclicker();                 frame.setvisible(true);             } catch (exception e) {                 e.printstacktrace();             }         }     }); }  /**  * create frame.  */ public autoclicker() {      setalwaysontop(false);     settitle("autoclicker");     setdefaultcloseoperation(jframe.exit_on_close);     setbounds(100, 100, 147, 162);     contentpane = new jpanel();     contentpane.setborder(new emptyborder(5, 5, 5, 5));     setcontentpane(contentpane);     contentpane.setlayout(null);      jcheckbox chckbxontop = new jcheckbox("on top");      boolean ontop = false;     chckbxontop.addactionlistener(new actionlistener() {         public void actionperformed(actionevent arg0) {              if(chckbxontop.isselected()){                 setalwaysontop(true);             }             else{                 setalwaysontop(false);             }             }     });     chckbxontop.setbounds(6, 7, 97, 23);     contentpane.add(chckbxontop);         jcheckbox chckbxautoclicker = new jcheckbox("autoclicker");     chckbxautoclicker.addactionlistener(new actionlistener() {         public void actionperformed(actionevent e) {             while(chckbxautoclicker.isselected()){                          try {                             robot r = new robot();                             r.mousepress(mouseevent.button1_mask);                             r.setautodelay(1080);                             r.mouserelease(mouseevent.button1_mask);                         } catch (awtexception e1) {                              e1.printstacktrace();                         }                      }                 }        });     chckbxautoclicker.setbounds(6, 80, 97, 23);     contentpane.add(chckbxautoclicker);     m.setforeground(new color(153, 102, 0));     m.setbounds(16, 92, 120, 31);     contentpane.add(m); } } 

swing single threaded - calling long running task on thread lock thread (the edt) , prevent painting, events, etc... occurring. 1 of actionlistener implementations creates infinite loop:

while(chckbxautoclicker.isselected()){ 

the above never evaluate false, because evaluating on edt, , events (such disabling jcheckbox allow method return false) cannot occur until edt free. if wish continually run task while allowing edt performs necessary tasks, have 3 options:

  1. create new thread. note calls swing thread should dispatched edt using swingutilities.invoke*
  2. use swingworker
  3. if wish @ later time on edt, or run on schedule on edt, use javax.swing.timer

Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -