Java实现的闹钟程序
"该资源是一个使用Java编程语言编写的简单闹钟程序,具有声音提示功能。源代码包含详细的注释,可帮助理解其工作原理。它利用了Java的util、awt、applet、text和event等包,实现了线程控制、用户交互以及音频播放。" 在Java编程中,创建一个闹钟应用主要涉及到以下几个关键知识点: 1. **线程(Thread)**:在Java中,闹钟的定时功能通常通过创建一个新的线程来实现。在这个例子中,`Thread timer = null;`定义了一个线程对象,用于控制闹钟的计时过程。`implements Runnable`表明Alarm类将实现Runnable接口,使得这个类能够被线程执行。 2. **图形用户界面(GUI)**:使用`java.awt`和`java.applet`包来构建图形用户界面。`Applet`是Java小应用程序的基类,可以嵌入到网页中运行。在这个闹钟程序中,可能包含了显示时间的图像(gif1)和几个按钮(SET、CANCEL、STOP)供用户交互。 3. **事件监听器(ActionListener)**:为了响应用户的操作,如点击按钮,程序创建了三个ActionListener实例:setli、cancelli和stopli。当用户触发对应按钮的事件时,会调用对应的`actionPerformed`方法,改变程序的状态,例如设置、取消或停止闹钟。 4. **音频播放(AudioClip)**:通过`getAudioClip`方法获取音频剪辑,并在闹钟响起时调用`ring.stop()`停止播放。这使得闹钟不仅可以显示时间,还能发出声音提醒。 5. **日期与时间处理(Calendar, SimpleDateFormat)**:使用`GregorianCalendar`类来处理日期和时间,它可以创建并修改日期对象。`SimpleDateFormat`用于格式化日期和时间的显示,使用户更容易理解。 6. **用户交互**:`Button`和`Label`对象用于创建GUI中的按钮和文本标签。例如,`Button setbutton = new Button("SET");`创建了一个名为"SET"的按钮,用户可以通过点击它来设置闹钟。 7. **状态变量**:`setflag`, `stopflag`, `cancelflag`等布尔变量用于跟踪用户操作的状态,例如是否正在设置闹钟、是否已停止闹钟等。 8. **事件处理**:通过添加监听器到按钮,程序可以捕捉到用户的点击事件。例如,`setbutton.addActionListener(setli);`将setli添加为setbutton的动作监听器,当用户点击SET按钮时,会触发setli中的`actionPerformed`方法。 9. **程序流程控制**:在`stopbutton`的监听器中,可以看到`ring.stop();`停止了音频播放,但注释掉的`g.clearRect(83,280,20,30);`可能是用于清除或更新GUI上的某个区域,这可能是一个清除闹钟显示或动画效果的代码。 这个Java编写的闹钟程序结合了Java的基础知识,包括线程、GUI编程、事件处理、音频播放以及日期时间处理,提供了一个实用的桌面应用程序示例。通过阅读和理解这个程序,开发者可以学习到如何在Java环境中构建交互式应用程序。
import java.awt.*;
import java.applet.*;
import java.text.*;
import java.awt.event.*;
public class Alarm extends Applet implements Runnable
{
Thread timer=null; //创建线程timer
Image gif1; //clockp:闹钟的外壳,闹铃和报时物
boolean setflag=false,stopflag=false,cancelflag=false;
Panel setpanel;
//获取声音文件
AudioClip ring=getAudioClip(getCodeBase(), "1.mid");
Button setbutton=new Button("SET");
Button cancelbutton=new Button("CANCEL");
Button stopbutton=new Button("STOP");
//响应按钮事件
private ActionListener setli=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setflag=true;
}
};
private ActionListener cancelli=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setflag=true;
};
private ActionListener stopli=new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ring.stop();
//清除的方法
//g.clearRect(83,280,20,30);
}
};
Label note1=new Label("Alarm clock:");
//GregorianCalendar提供的是一个日历式的东东,上面又多了很多的参数,是方便操作了不少。而Date类的功能远不及其,求个和日期有联系的还要自己计算。
GregorianCalendar cal=new GregorianCalendar();
GregorianCalendar cal2=new GregorianCalendar();
SimpleDateFormat df=new SimpleDateFormat("yyyy MM dd HH:mm:ss");//设置时间格式
Date dummy=new Date(); //生成Data对象
String lastdate=df.format(dummy);
Font F=new Font("TimesRoman",Font.PLAIN,14);//设置字体格式
Date dat=null;
Date timeNow;
Color fgcol=Color.blue;
Color fgcol2=Color.darkGray;
Color backcolor=Color.blue;
Label hlabel2,mlabel2,slabel2;//显示时间单位时所用的标签(时、分、秒)
int i;
int s,m,h;
TextField sethour,setmin,setsec;//显示当前时间文本框和定时文本框
剩余10页未读,继续阅读
- 粉丝: 1
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦