4 import javax swing import java awt event


















![4、分段编写类代码-执行体 l编写运行的main() public static void main(String args[]) { new My. Count. Down("我的倒计时牌"); } // 4、分段编写类代码-执行体 l编写运行的main() public static void main(String args[]) { new My. Count. Down("我的倒计时牌"); } //](https://slidetodoc.com/presentation_image_h2/e7b2260a56957846542c45766a21b834/image-19.jpg)







- Slides: 26







4、分段编写类代码-导入类库包 //窗口显示类 import javax. swing. *; import java. awt. event. *; //时间计算和字符串转换类 import java. text. Parse. Exception; import java. text. Simple. Date. Format; import java. util. Calendar; import java. util. Date; //定时器类 import java. util. Timer; import java. util. Timer. Task; //播放wav声音文件类 mport java. applet. *; 7

4、分段编写类代码-类数据 /** * 倒计时类 @version $Id: My. Count. Down. java, v 1. 0 2011/3/1 * @author Zhangyanmei */ public class My. Count. Down extends JFrame implements Action. Listener //窗口加事件监听的子类 { private Calendar the. Date; //公历时间变量 private long the. Time; //公历时间对应的毫秒数 //倒计时的计算变量 private long current. Time; private long dist. Time; private long day, hour, minutes, seconds; 8

4、分段编写类代码-类数据 //日期和定时器标记 private boolean date. Valid, timer. Valid; private Timer my. Timer; private Audio. Clip audio. Clip; //窗口组件 private JLabel prompt; private JText. Field in. Field; private JButton go. Button, cancel. Button; private JText. Area display; 9

4、分段编写类方法-从易到难 public void set. Timer(String date) { Simple. Date. Format df = new Simple. Date. Format("yyyy/MM/dd/hh: mm: ss"); try { Date my. Date = df. parse(date); the. Date = Calendar. get. Instance(); the. Date. set. Time(my. Date); the. Time = the. Date. get. Time. In. Millis(); date. Valid = true; //日期生效 } catch (Exception ex) { JOption. Pane. show. Message. Dialog(this, "目标时 间格式不对!请重新输入"); //弹出错误对话框 in. Field. set. Text("); 10

4、分段编写类方法-从易到难 public void cancel() { if (timer. Valid) my. Timer. cancel(); //关闭定时器 timer. Valid = false; date. Valid = false; in. Field. set. Text(""); //清空目标时间 } //退出时关闭定时器 11


4、分段编写类代码-按钮处理 public void action. Performed(Action. Event e) { if ((e. get. Source() == in. Field) ||(e. get. Source() == go. Button)) { set. Timer(in. Field. get. Text()); start. Timer(); }else if (e. get. Source() == cancel. Button) cancel(); }//end action. Performed 13

4、分段编写类方法-倒计时任务(上 ) public void start. Timer() { final long current. Time; final long dist. Time; final long day, hour, minutes, seconds; if (date. Valid) { my. Timer = new Timer(); my. Timer. schedule(new Timer. Task() { @Override public void run() { current. Time = new Date(). get. Time(); dist. Time = the. Time - current. Time; if (dist. Time<1000) time. Out(); else { 14

4、分段编写类方法-倒计时任务(下 ) day = ((dist. Time/1000)/(3600*24)); hour = ((dist. Time/1000)-day*86400)/3600; minutes = ((dist. Time/1000)-day*86400 hour*3600)/60; seconds = (dist. Time/1000)-day*86400 hour*3600 -minutes*60; display. set. Text("距离目标时间还有"+day+" 天 "+hour+"小时 : "+ minutes+"分钟 : "+seconds+"秒"); } }//end run }, 0, 1000); //设置每隔一秒就周期性刷新剩余时间的 定时器 timer. Valid = true; //定时器生效 }else timer. Valid = false; }//倒计时显示刷新任务 15

4、分段编写类代码-主窗口初始化(上) public My. Count. Down(String title) //创建窗口 { date. Valid = false; timer. Valid = false; prompt= new JLabel("请以年/月/日/时/分/秒的 格式输入倒计时时间: "); in. Field = new JText. Field(20); in. Field. add. Action. Listener(this); //回车键也产生 事件 go. Button = new JButton("开始"); cancel. Button = new JButton("取消"); //添加按钮的事件监听 go. Button. add. Action. Listener(this); cancel. Button. add. Action. Listener(this); 16

4、分段编写类代码-主窗口初始化(中) //把输入相关组件组合在一起,统一布局 JPanel input. Panel = new JPanel(); input. Panel. add(prompt); input. Panel. add(in. Field); input. Panel. add(go. Button); input. Panel. add(cancel. Button); //布局,输入部分放中央,剩余时间显示放下部 Container content. Pane = get. Content. Pane(); content. Pane. add("Center", input. Panel); display = new JText. Area(1, 32); display. set. Text("距离目标还有**天**时**分** 秒"); content. Pane. add("South", display); 17

4、分段编写类代码-主窗口初始化(下) //设置标题,使窗口激活可见 set. Title(title); set. Visible(true); set. Size(400, 150); get. Default. Close. Operation(); //装声音文件, wav文件必须和class文件在同一目录下 audio. Clip=Applet. new. Audio. Clip(get. Class(). get. R esource(“ding. wav”)); }//主窗口初始化 18
![4分段编写类代码执行体 l编写运行的main public static void mainString args new My Count Down我的倒计时牌 4、分段编写类代码-执行体 l编写运行的main() public static void main(String args[]) { new My. Count. Down("我的倒计时牌"); } //](https://slidetodoc.com/presentation_image_h2/e7b2260a56957846542c45766a21b834/image-19.jpg)
4、分段编写类代码-执行体 l编写运行的main() public static void main(String args[]) { new My. Count. Down("我的倒计时牌"); } // main() 19






