📄 reminderservice.java
字号:
/**
* 读入一个有关时间安排的文本文件;睡眠直至预定时间,然后发出嘟嘟声
*/
import java.io.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
//定义RemiderService类
public class ReminderService {
class Item {
Date due;//定义一个日期型变量
String message;//定义一个字符串,用来存放显示信息
Item(Date d, String m) {
due = d;
message = m;
}
}
ArrayList l = new ArrayList();//数组列表
//main()方法
public static void main(String argv[ ]) throws IOException {
ReminderService rs = new ReminderService();//实例化RemiderService类
rs.load();//调用load()方法
rs.run();//调用run()方法
}
//定义load()方法,用来读取信息
protected void load() throws IOException {
//使用缓冲区读取文件
BufferedReader is = new BufferedReader(
new FileReader("ReminderService.txt"));
//格式化日期时间格式
SimpleDateFormat formatter =
new SimpleDateFormat ("yyyy MM dd hh mm" );
String aLine;
while ((aLine = is.readLine()) != null) {//判断是否可写
ParsePosition pp = new ParsePosition(0);
Date date = formatter.parse(aLine,pp);
if (date == null) {//如果日期格式不正确
message("Invalid date in " + aLine);
continue;
}
String mesg = aLine.substring(pp.getIndex());
l.add(new Item(date, mesg));
}
}
//定义run()方法,根据不同情况,进行相应的操作并且显示不同的信息。
public void run() {
System.out.println("ReminderService: Starting at "+ new Date());
while (!l.isEmpty()) {
Date d = new Date();
Item i = (Item) l.get(0);
long interval = i.due.getTime() - d.getTime();
if (interval>0) {//判断所设定的时间是否过期
System.out.println("Sleeping until" + i.due);
try {
Thread.sleep(interval);
} catch (InterruptedException e) {
System.exit(1);//抛出异常
}
//调用message()方法,显示信息
message(i.due + ":" + i.message);
} else//如果设定的时间过期,则显示另一个信息
message("MISSED" + i.message + "at" + i.due);
l.remove(0);
}
System.exit(0);
}
//定义message()方法,用来显示信息
void message(String message) {
System.out.println("007" + message);
JOptionPane.showMessageDialog(null,
message,
"Timer Alert", // 标题栏
JOptionPane.INFORMATION_MESSAGE); // 图标
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -