调度程序使用Calendar类

时间:2013-05-17 00:56:23

标签: java calendar scheduled-tasks

我正在使用Scheduler应用程序,用户可以在其中输入一些信息,如任务名称,时间和日期。如果当前有任务,应用程序应检查每分钟,它会弹出一个窗口或发出声音。现在我坚持检查过程。

public static void main(String[] args) {
    try{
    final BufferedReader br = new BufferedReader(new FileReader("D://Courses//PlannerText.txt"));

    final Runnable checker = new Runnable() {

        public void run() {

            Calendar cal = Calendar.getInstance();
            System.out.println( "This is time before if statement "+cal.get(Calendar.HOUR) +":" + cal.get(Calendar.MINUTE) );
            try {
                String line = null;
                while ( (line = br.readLine()) !=null) 
                {   
                     String[] currTask = line.split("\\|");

                     if (cal.get(Calendar.MINUTE)== Integer.parseInt(currTask[2])
                        && cal.get(Calendar.HOUR) == Integer.parseInt(currTask[3])){


                         System.out.println( "This is time after if statement "+cal.get(Calendar.HOUR) +":" + cal.get(Calendar.MINUTE) );
                         System.out.println("This is the time of the task "+currTask[3]+":"+currTask[2]);

                         JFrame reminderFrame = new JFrame("Reminder");
                         reminderFrame.setVisible(true);
                         reminderFrame.setLocation(200,200);
                     }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    };
    final ScheduledFuture checkerHandle = scheduler.scheduleAtFixedRate(checker, 0, 1, TimeUnit.MINUTES);   
    scheduler.schedule(new Runnable() {
        public void run() {
            checkerHandle.cancel(true);
        }
    }, 1, TimeUnit.DAYS);   
    }catch(FileNotFoundException e){
        e.printStackTrace();
    }
}

当前时间=任务在文本文件中的时间时,框架不会弹出,所以有人会告诉我这段代码有什么问题!!

提前致谢:)

2 个答案:

答案 0 :(得分:0)

欢迎使用调试的概念。放置一些调试断点或打印输出以显示currTask数组的值。

可能你使用错误的数组索引或时间错误(也许是HOUR_OF_DAY)

答案 1 :(得分:0)

谢谢大家,但我已经弄明白了...因为我的缓冲读取器不在我的run()方法中,所以文件只在启动时读取一次,而不是每分钟读取一次。