2016-12-03 6 views
0

Also verwende ich die Robot-Klasse in Java, um eine Aufgabe automatisch während der Nacht durchzuführen. Ich brauche es um 1:10:10 Uhr, aber es funktioniert nicht mit meinen Tests. Ich passe die Zeit mit der aktuellen Zeit an, aber füge eine Minute zum Testen hinzu. Es führt die Aufgabe nicht aus. Hier ist meine (herausgegeben, machte die ganze Zahl ein boolean jetzt auch) Hauptcode:Eine Aufgabe zu einer bestimmten Zeit ausgeführt

private void startStopButtonActionPerformed(java.awt.event.ActionEvent evt) {             
    Calendar cal = Calendar.getInstance(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); 
    String time = sdf.format(cal.getTime()); 
    System.out.println(time); 
    press = true; 
    while(press == true){ 
     if(time.equals("09:39:10")){ 
      System.out.println("well its time"); 
      try { 
       rightClick(); 
       TimeUnit.SECONDS.sleep(2); 
       click(573, 255); 
       TimeUnit.SECONDS.sleep(2); 
       click(648, 294); 
       TimeUnit.SECONDS.sleep(2); 
       keyPress(); 
       TimeUnit.SECONDS.sleep(2); 
       press = false; 
      } catch (AWTException | InterruptedException ex) { 
       Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      break; 
     } 
    } 
}      

Und hier sind meine Methoden:

private void rightClick() throws AWTException{ 
    Robot bot = new Robot(); 
    bot.keyPress(KeyEvent.VK_5); 
    bot.delay(500); 
    bot.keyRelease(KeyEvent.VK_5); 
    bot.delay(1000); 
    bot.mousePress(InputEvent.BUTTON3_DOWN_MASK); 
    bot.delay(500); 
    bot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); 
} 

private void click(int x, int y) throws AWTException{ 
    Robot rob = new Robot(); 
    rob.mouseMove(x, y); 
    rob.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
    rob.delay(500); 
    rob.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 
} 

private void keyPress() throws AWTException{ 
    Robot r = new Robot(); 
    r.keyPress(KeyEvent.VK_T); 
    r.delay(500); 
    r.keyRelease(KeyEvent.VK_T); 
    r.delay(500); 
} 

So hoffe ich, dass jemand aufklären kann mich darüber, warum es isn‘ t die Aufgabe erledigen. :)

+0

Haben Sie es debuggt? Sind Sie sicher, dass Ihre Datumszeichenfolge im richtigen Format ist? – Carcigenicate

+0

Was ist 'drücken' oben? Wo wird es deklariert und initialisiert? – nullpointer

+0

Die 'press' ist eine Ganzzahl und wird jedes Mal, wenn ich die StartStop-Taste drücke, um 1 erhöht. Ja, ich habe sichergestellt, dass meine Datenfolge im richtigen Format ist. –

Antwort

0

Es gibt zwei Debug-Punkte, die Sie mit Follow-up kann -

  1. press sollte mit press = 0 initialisiert werden, um die während Bedingung zu erfüllen. Obwohl das scheint eine Endlosschleife zu sein, dass. Es sei denn, Ihr Code erreicht eine Ausnahme.

  2. Innerhalb Ihres if Zustand, versuchen

zu

if(sdf.format(cal.getTime()).equals("08:15:10") // notice the starting 0 
ändert, da Sie zwei Strings vergleichen und nicht einen ganzen Wert an.

+0

Funktioniert immer noch nicht. 'while (drücke == 1) { if (sdf.format (cal.getTime()). gleich (" 08:36:10 ")) { System.out.println (" Nun, es ist Zeit ");' 'int press = 0;' –

+0

Es wird nicht einmal gedruckt. –

+0

@BrennanB. Könnten Sie bitte die Frage mit der vollständigen Methode/Klasse dann aktualisieren. – nullpointer

0

Ich habe meine eigene Frage herausgefunden! Es stellt sich heraus, dass es nur die Zeit überprüft hat, wenn ich den Knopf drücke, also hat es nie die Zeit danach überprüft. Hier ist der feste Code:

private void startStopButtonActionPerformed(java.awt.event.ActionEvent evt) {             
    press = true; 
    System.out.println(press); 
    while(press == true){ 
     Calendar cal = Calendar.getInstance(); 
     SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); 
     String time = sdf.format(cal.getTime()); 
     System.out.println(time); 
     if(time.equals("10:27:10")){ 
      System.out.println("well its time"); 
      try { 
       rightClick(); 
       TimeUnit.SECONDS.sleep(2); 
       click(573, 255); 
       TimeUnit.SECONDS.sleep(2); 
       click(648, 294); 
       TimeUnit.SECONDS.sleep(2); 
       keyPress(); 
       TimeUnit.SECONDS.sleep(2); 
       press = false; 
      } catch (AWTException | InterruptedException ex) { 
       Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      break; 
     } 
    } 
} 
Verwandte Themen