在特定时间执行任务
因此,我使用Java中的Robot类在夜间自动执行任务。我需要它在上午1:10:10完成任务,但它不适用于我的测试。我将时间与当前时间匹配,但是需要加一分钟进行测试。它不执行任务。这里是我的(编辑,取得了整一个布尔现在还)主代码:在特定时间执行任务
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;
}
}
}
这里是我的方法:
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);
}
所以,我希望任何人都可以见识一下为什么它不是”不要做任务。 :)
有你可以遵循两个调试点 -
press
应press = 0
被初始化为满足,而条件。虽然这似乎是一个无限循环后发布。除非你的代码遇到异常。-
在您
if
条件,尝试更改为if(sdf.format(cal.getTime()).equals("08:15:10") // notice the starting 0
,因为你在这里比较两个字符串,而不是整数值。
仍然无法正常工作。 while(press == 1){sdf.format(cal.getTime())。equals(“08:36:10”)){0} {System.out.println(“well its time”); 'int press = 0;' –
它甚至不打印它。 –
@BrennanB。你可以用te完整的方法/类更新问题。 – nullpointer
我已经想出了我自己的问题!事实证明,它只检查了我按下按钮的时间,所以它从来没有检查过后的时间。这里是固定代码:
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;
}
}
}
你调试过吗?你确定你的日期字符串格式正确吗? – Carcigenicate
上面是什么?它在哪里宣布和初始化? – nullpointer
'press'是一个整数,每次按下startStop按钮时加1。是的,我已确保我的数据字符串格式正确。 –