在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);         
  
}