注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

java小软件--任务提醒之JAVA源代码  

2011-11-08 14:49:04|  分类: JAVA应用与研究 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

任务提醒JAVA 源代码:

 //方法一:

// 使用System.currentTimeMillis()方法实现

package zwh;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
import java.util.Date;

@SuppressWarnings({ "serial", "unused" })
public class minder extends JFrame{

 /**
  * @param args
  */
 private long min=5;
 JTextField JT=new JTextField("5",4);
 JTextField JTF=new JTextField(20);
 JButton JB1=new JButton("开始计划");
 JButton JB2=new JButton("复位计划");
 
 public minder(){
  Container c=getContentPane();
  c.setLayout(new BorderLayout());
  JPanel JP1=new JPanel();
  JPanel JP2=new JPanel(new FlowLayout());
  JLabel JL=new JLabel("请填写计划,字数不超过20个字:");
  JLabel JL2=new JLabel("分后提醒(正整数)");
  JLabel JL3=new JLabel("请在");
  
   
  JP1.add(JL); JP1.add(JTF);
  JP1.add(JL3);JP1.add(JT);JP1.add(JL2);
  JP2.add(JB1);JP2.add(JB2);
  c.add(JP1,BorderLayout.CENTER);
  c.add(JP2,BorderLayout.SOUTH);
  
  JB1.addActionListener(new ActionListener(){

   @Override
   public void actionPerformed(ActionEvent e) {
    String TimeLong=JT.getText();
    long TimeLongNum= (Integer.parseInt(TimeLong))*1000*60;
    long StartTime=System.currentTimeMillis();
    if(JTF.getText().length()!=0){                        
     while(true){
      if(System.currentTimeMillis()-StartTime==TimeLongNum){
     JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务!");
     break;
                }
      }
     }
    }
  });
  JB2.addActionListener(new ActionListener(){

   @Override
   public void actionPerformed(ActionEvent e) {
    JTF.setText(null);
    JT.setText("5");
    
   }  
  });
  
  setVisible(true);
  setBounds(100, 100, 250, 160);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setResizable(false);
  setTitle("任务提醒");
 }
 public static void main(String[] args) {
  new minder();

 }

}

 

 

效果如图:

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

 

如下输入,然后单击按钮“开始计划”,如下所示:

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

 

当时候到的时候,弹出消息框,如下所示:

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

单击消息框的“确定”按钮,如果任务完成,要做另一个任务提醒,点击“复位计划”按钮,当然也可以手工修改。如下所示:

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

 

当然此软件并非完美,初自学JAVA难免有解决不了和想不到的情况,在此不多述。

 

//方法二:

//使用线程:

package zwh;

 

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
import java.util.Date;

@SuppressWarnings({ "serial", "unused" })
public class minder2 extends JFrame{

 /**
  * @param args
  */
 private Thread t;             //声明线程;
 private long min=5;
 JTextField JT=new JTextField("5",4);
 JTextField JTF=new JTextField(20);
 JButton JB1=new JButton("开始计划");
 JButton JB2=new JButton("复位计划");
 
 public minder2(){
  Container c=getContentPane();
  c.setLayout(new BorderLayout());
  JPanel JP1=new JPanel();
  JPanel JP2=new JPanel(new FlowLayout());
  JLabel JL=new JLabel("请填写计划,字数不超过20个字:");
  JLabel JL2=new JLabel("分后提醒(正整数)");
  JLabel JL3=new JLabel("请在");
 
  
  JP1.add(JL); JP1.add(JTF);
  JP1.add(JL3);JP1.add(JT);JP1.add(JL2);
  JP2.add(JB1);JP2.add(JB2);
  c.add(JP1,BorderLayout.CENTER);
  c.add(JP2,BorderLayout.SOUTH);
 
  JB1.addActionListener(new ActionListener(){

   @Override
   public void actionPerformed(ActionEvent e) {
    String TimeLong=JT.getText();
    final long TimeLongNum= (Integer.parseInt(TimeLong))*1000*60;
    if(JTF.getText().length()!=0){
     new Thread(new Runnable(){                 //启动内部类线程;

   @SuppressWarnings("static-access")
   @Override
   public void run() {
                 try {
     t.sleep(TimeLongNum);                 //进程暂停一段时间;
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
                 JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务!");
    
   }
      
     }).start();
     }
    }
  });
  JB2.addActionListener(new ActionListener(){

   @Override
   public void actionPerformed(ActionEvent e) {
    JTF.setText(null);
    JT.setText("5");
   
   } 
  });
 
  setVisible(true);
  setBounds(100, 100, 250, 160);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setResizable(false);
  setTitle("任务提醒");
 }
 public static void main(String[] args) {
  new minder2();

 }

}

 

由于后来觉得这个任务太过简单,所以又加了两个任务,同时代码也做了些更改,请看如下代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

@SuppressWarnings("serial")
public class Minder extends JFrame{

  private Thread thread1;     //声明线程1
  private Thread thread2;     //声明线程2
  private Thread thread3;     //声明线程2

  //以下定义JP2面板下的两个文本框
  JTextField JP2_JTF1=new JTextField(20);
  JTextField JP2_JTF2=new JTextField("5",4);
  //以下定义JP3面板下的两个文本框
  JTextField JP3_JTF1=new JTextField(20);
  JTextField JP3_JTF2=new JTextField("5",4);
  //以下定义JP4面板下的两个文本框
  JTextField JP4_JTF1=new JTextField(20);
  JTextField JP4_JTF2=new JTextField("5",4);
  //以下定义JP5面板下的两个按钮
  JButton JP5_JBStart=new JButton("开始计划");
  JButton JP5_JBReset=new JButton("重置计划");
 
  public Minder(){
   //基本窗口的参数代码
    Container cp=getContentPane();
    cp.setLayout(new FlowLayout());
    setVisible(true);
    setBounds(450, 250, 500, 245);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    setTitle("任务提醒--周工解梦");
   
    //创建面板
    JPanel JP1=new JPanel();
    JPanel JP2=new JPanel();
    JPanel JP3=new JPanel();
    JPanel JP4=new JPanel();
    JPanel JP5=new JPanel();
   
    //将面板对组件进行布局的代码
    JLabel JP1_JL=new JLabel("请填写任务,每个任务的字数不超过20个字:");
    JP1.add(JP1_JL);
   
    JLabel JP2_JL1=new JLabel("任务1");
    JLabel JP2_JL2=new JLabel("请在");
    JLabel JP2_JL3=new JLabel("分钟后提醒(正整数)");
    JP2.add(JP2_JL1);JP2.add(JP2_JTF1);
    JP2.add(JP2_JL2);JP2.add(JP2_JTF2);JP2.add(JP2_JL3);
   
    JLabel JP3_JL1=new JLabel("任务2");
    JLabel JP3_JL2=new JLabel("请在");
    JLabel JP3_JL3=new JLabel("分钟后提醒(正整数)");
    JP3.add(JP3_JL1);JP3.add(JP3_JTF1);
    JP3.add(JP3_JL2);JP3.add(JP3_JTF2);JP3.add(JP3_JL3);
   
    JLabel JP4_JL1=new JLabel("任务3");
    JLabel JP4_JL2=new JLabel("请在");
    JLabel JP4_JL3=new JLabel("分钟后提醒(正整数)");
    JP4.add(JP4_JL1);JP4.add(JP4_JTF1);
    JP4.add(JP4_JL2);JP4.add(JP4_JTF2);JP4.add(JP4_JL3);
   
    JP5.add(JP5_JBStart);JP5.add(JP5_JBReset);

    //将容器对面板进行布局的代码
    cp.add(JP1);
    cp.add(JP2);
    cp.add(JP3);
    cp.add(JP4);
    cp.add(JP5);
   
   JP5_JBStart.addActionListener(new ActionListener(){     //对“开始计划”按钮添加触发事件

      @Override
      public void actionPerformed(ActionEvent e) {
       String TimeLong1=JP2_JTF2.getText();
       final long TimeLongNum1= (Integer.parseInt(TimeLong1))*1000*60;
       if(JP2_JTF1.getText().length()!=0){
        JOptionPane.showMessageDialog(null, "计划已在倒计时,请最小化窗口。");
        new Thread(new Runnable(){                 //启动内部类线程1

      @SuppressWarnings("static-access")
      @Override
      public void run() {
                    try {
        thread1.sleep(TimeLongNum1);                 //进程暂停一段时间
       } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
                    JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务:\n"+JP2_JTF1.getText());
      
      }
        
        }).start();
        }
       ///////////////
       String TimeLong2=JP3_JTF2.getText();
       final long TimeLongNum2= (Integer.parseInt(TimeLong2))*1000*60;
       if(JP3_JTF1.getText().length()!=0){
         new Thread(new Runnable(){                 //启动内部类线程1

       @SuppressWarnings("static-access")
       @Override
       public void run() {
                     try {
         thread2.sleep(TimeLongNum2);                 //进程暂停一段时间
        } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
                     JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务:\n"+JP3_JTF1.getText());
       
       }
         
         }).start();
         }
       //////////////////
       String TimeLong3=JP4_JTF2.getText();
       final long TimeLongNum3= (Integer.parseInt(TimeLong3))*1000*60;
       if(JP4_JTF1.getText().length()!=0){
         new Thread(new Runnable(){                 //启动内部类线程1

       @SuppressWarnings("static-access")
       @Override
       public void run() {
                     try {
         thread3.sleep(TimeLongNum3);                 //进程暂停一段时间
        } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
                     JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务:\n"+JP4_JTF1.getText());
       
       }
         
         }).start();
         }
      
      
       }
     });
  JP5_JBReset.addActionListener(new ActionListener(){     //对“复位计划”按钮添加触发事件

      @Override
      public void actionPerformed(ActionEvent e) {
      //复位后将三个面板中的文本框中的数据清零或设置默认值,同时关闭相应线程
      JP2_JTF1.setText(null);
      JP2_JTF2.setText("5");
      // thread1.stop();
      JP3_JTF1.setText(null);
      JP3_JTF2.setText("5");
      // thread2.stop();
      JP4_JTF1.setText(null);
      JP4_JTF2.setText("5");
      // thread3.stop();
      
      } 
     });
   
  }
 
  public static void main(String[] args) {
  new Minder();
 }
}

请看效果图:

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨
 

 

 

由于之后发现上面的那个程序存在一些小Bug,所以做了如下的更改,代码如下:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

@SuppressWarnings("serial")
public class Minder extends JFrame{

  private Thread thread1;     //声明线程1
  private Thread thread2;     //声明线程2
  private Thread thread3;     //声明线程3
 
  private boolean thread1B=false;   //记录线程1的运行状态
  private boolean thread2B=false;   //记录线程2的运行状态
  private boolean thread3B=false;   //记录线程3的运行状态
 
  private boolean thread1A=false;   //记录是否存在任务1
  private boolean thread2A=false;   //记录是否存在任务2
  private boolean thread3A=false;   //记录是否存在任务3

  //以下定义JP2面板下的两个文本框
  JTextField JP2_JTF1=new JTextField(20);
  JTextField JP2_JTF2=new JTextField("5",4);
  //以下定义JP3面板下的两个文本框
  JTextField JP3_JTF1=new JTextField(20);
  JTextField JP3_JTF2=new JTextField("5",4);
  //以下定义JP4面板下的两个文本框
  JTextField JP4_JTF1=new JTextField(20);
  JTextField JP4_JTF2=new JTextField("5",4);
  //以下定义JP5面板下的两个按钮
  JButton JP5_JBStart=new JButton("开始计划");
  JButton JP5_JBReset=new JButton("重置计划");
 
  public Minder(){
   //基本窗口的参数代码
    Container cp=getContentPane();
    cp.setLayout(new FlowLayout());
    setVisible(true);
    setBounds(450, 250, 500, 245);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    setTitle("任务提醒--周工解梦");
   
    //创建面板
    JPanel JP1=new JPanel();
    JPanel JP2=new JPanel();
    JPanel JP3=new JPanel();
    JPanel JP4=new JPanel();
    JPanel JP5=new JPanel();
   
    //将面板对组件进行布局的代码
    JLabel JP1_JL=new JLabel("请填写任务,每个任务的字数不超过20个字:");
    JP1.add(JP1_JL);
   
    JLabel JP2_JL1=new JLabel("任务1");
    JLabel JP2_JL2=new JLabel("请在");
    JLabel JP2_JL3=new JLabel("分钟后提醒(正整数)");
    JP2.add(JP2_JL1);JP2.add(JP2_JTF1);
    JP2.add(JP2_JL2);JP2.add(JP2_JTF2);JP2.add(JP2_JL3);
   
    JLabel JP3_JL1=new JLabel("任务2");
    JLabel JP3_JL2=new JLabel("请在");
    JLabel JP3_JL3=new JLabel("分钟后提醒(正整数)");
    JP3.add(JP3_JL1);JP3.add(JP3_JTF1);
    JP3.add(JP3_JL2);JP3.add(JP3_JTF2);JP3.add(JP3_JL3);
   
    JLabel JP4_JL1=new JLabel("任务3");
    JLabel JP4_JL2=new JLabel("请在");
    JLabel JP4_JL3=new JLabel("分钟后提醒(正整数)");
    JP4.add(JP4_JL1);JP4.add(JP4_JTF1);
    JP4.add(JP4_JL2);JP4.add(JP4_JTF2);JP4.add(JP4_JL3);
   
    JP5.add(JP5_JBStart);JP5.add(JP5_JBReset);
    //将容器对面板进行布局的代码
    cp.add(JP1);
    cp.add(JP2);
    cp.add(JP3);
    cp.add(JP4);
    cp.add(JP5);
   
   JP5_JBStart.addActionListener(new ActionListener(){     //对“开始计划”按钮添加触发事件

      @Override
      public void actionPerformed(ActionEvent e) {

        ////////////
        if(JP2_JTF1.getText().length()==0){ //如果不存在任务1,则标记任务1为空,相反让线程运行标记为活动状态,即为true.以下同.
         thread1A=false;
         thread1B=true;
        }else thread1A=true;    //若存在任务1,让线程运行标记留给下面的程序段进行赋值,此时线程状态仍为false.以下同.
        if(JP3_JTF1.getText().length()==0){
         thread2A=false;
         thread2B=true;
        }else thread2A=true;
        if(JP4_JTF1.getText().length()==0){
         thread3A=false;
         thread3B=true;
        }else thread3A=true;
         
      
    ////////////
    String TimeLong1=JP2_JTF2.getText();
       final long TimeLongNum1= (Integer.parseInt(TimeLong1))*1000*60;      
       if(thread1A){
       new Thread(new Runnable(){                 //启动内部类线程1
        @SuppressWarnings("static-access")
         @Override
          public void run() {
        
                    try {
          thread1.sleep(TimeLongNum1);                 //进程暂停一段时间
     
         } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
                    JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务:\n"+JP2_JTF1.getText());
                 
                    //若存在任务1,且当任务1完成后(即线程从sleep状态醒来),给线程运行标记赋值为true.以下同.
                    thread1B=true;
                    SetClose();   //调用SetClose()方法,判断任务均完成,若均完成,则退出系统.以下同.
                  
            }
       
        }).start();
      
        }
      
       ///////////////
       String TimeLong2=JP3_JTF2.getText();
       final long TimeLongNum2= (Integer.parseInt(TimeLong2))*1000*60;
       if(thread2A){
         new Thread(new Runnable(){                 //启动内部类线程1

       @SuppressWarnings("static-access")
       @Override
       public void run() {
       
                     try {
         thread2.sleep(TimeLongNum2);                 //进程暂停一段时间
          
        } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
                     JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务:\n"+JP3_JTF1.getText());
                     thread2B=true;
                     SetClose();
        }
        
         }).start();
        
         }
      
       //////////////////
       String TimeLong3=JP4_JTF2.getText();
       final long TimeLongNum3= (Integer.parseInt(TimeLong3))*1000*60;
       if(thread3A){
         new Thread(new Runnable(){                 //启动内部类线程1

       @SuppressWarnings("static-access")
       @Override
       public void run() {
      
                     try {
         thread3.sleep(TimeLongNum3);                 //进程暂停一段时间
        
        } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
                     JOptionPane.showMessageDialog(null, "时间已到,请检查您的任务:\n"+JP4_JTF1.getText());
                     thread3B=true;
                     SetClose();
        }  
              
         }).start();
        
         }
       //如果只要有一个任务,则单击"开始计划"后隐藏窗口
       if(thread1A||thread2A||thread3A){
        JOptionPane.showMessageDialog(null, "所有任务已在后台运行,任务窗口将关闭");
        SetHide();
         }      
       }   
     });
  JP5_JBReset.addActionListener(new ActionListener(){     //对"复位计划"按钮添加触发事件

          @Override
      public void actionPerformed(ActionEvent e) {
      //复位后将三个面板中的文本框中的数据清零或设置默认值
      if(!((JP2_JTF1.getText()).equals(""))){
      JP2_JTF1.setText(null);
      JP2_JTF2.setText("5");
            }
      if(!((JP3_JTF1.getText()).equals(""))){
      JP3_JTF1.setText(null);
      JP3_JTF2.setText("5");
      }
      if(!((JP4_JTF1.getText()).equals(""))){
      JP4_JTF1.setText(null);
      JP4_JTF2.setText("5");
      }
     
      } 
     });
   
  }
 
  ///////////主方法
  public static void main(String[] args) {
  new Minder();
 }
 
  //隐藏窗口,因为在此类的构造方法中的按钮内部不能使用this关键字,所以另写一方法来调用,而在成员方法中this关键字
  //就表未此类的对象
  private void SetHide(){
   this.setVisible(false);
  }
 
  private void SetClose(){
     
      //如果有任务,且所有任务都已经提醒完成,则退出系统,这里,没有任务的在开始时就标记相应线程状态为true,
      //而有任务的,则必须在以上程序块中当线程醒来后(即任务完成)才标记相应线程状态为true,为了便于判断所有
      //任务都已提示完成.
      if(this.thread1B&&this.thread2B&&this.thread3B){
        System.exit(0);
        }
  }
 
}

如下图所示:

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

 

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

 

1分钟之后,弹出如下消息框。

java小软件--任务提醒之JAVA源代码 - 漠雨 - 沙漠里de烟雨

 

 

 

  评论这张
 
阅读(2046)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018