在Java语言中,线程的类除了类Thread外,还有类Timer和类TimerTask。因此对于程序员来说,如果想掌握好事件机制,除了掌握类Thread,还必须要学习类Timer和类TimerTask。通过模拟关机工具的功能,介绍如何调用Windows系统命令,还将详细介绍线程的类Timer。
关机工具原理
关机工具项目用来模拟计算机的关机功能,即Windows系统的关机功能,除此之外还将实现定时关闭计算机的功能等。
关机工具的实现过程
本章通过调用系统命令和多线程的相关知识来实现关机工具项目,它包含两个工具类和一个界面类。
public class CloseComputer extends JFrame implements ActionListener {
private JLabel tag;
String key;
public CloseComputer() {
this.getContentPane().add(panel_main);
public static void main(String[] args) throws Exception {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(320, 120);
frame.setTitle("关机工具");
public void countdown() {
key = JOptionPane.showInputDialog(this, "请输入倒计时关机剩余的时间
CountTimeTool.delaytime(Long.parseLong(key));
public void time() {
String a = String.valueOf(h);
int hour, minute, secord;
String hourtmp, minutetmp, secordtmp;
hourtmp = JOptionPane.showInputDialog(this, "请输入关机的小时(12小
minutetmp = JOptionPane.showInputDialog(this, "请输入关机的分钟",
secordtmp = JOptionPane.showInputDialog(this, "请输入关机的秒钟",
if (discrepancy_time < 0) {
public int timesum(int h, int m, int s) {
public void cancel() {
JOptionPane.showMessageDialog(this, "你已经成功取消了关机操作!",
public void actionPerformed(ActionEvent eAction) {
if (eAction.getSource() instanceof JButton) {
if ("倒计时关机".equals(ActionCommand)) {
countdown();
if ("定时关机".equals(ActionCommand)) {
time();
if ("取消关机".equals(ActionCommand)) {
cancel();
}
【代码解析】
关机工具的工具类
CutDownTool.java类主要用来实现关闭计算机的功能,由于该类需要被定时调用,所以继承了TimerTask类,该类的具体内容如代码8.2所示。代码8.2
public class CutDownTool extends TimerTask {
public void run() {
}
【代码解析】
在上述代码中,首先继承了TimerTask类,然后重写该类的run()方法,在该方法中通过执行命令shutdown-s实现了关闭计算机的功能。
CutDownTool.java类主要用来实现定时关闭计算机的功能,即在一定时间后执行CutDownTool类,该类的具体内容如代码8.3所示。
定时关机工具类:CountTimeTool.java
public class CountTimeTool {
long delay = 1000;
Timer timer = new Timer();
timer.schedule(w1, delay * dt);
}