import javautil;
import javaawt;
import javaapplet;
import javatext;
public class AlarmClock extends Applet implements Runnable
{
Thread timer=null; //创建线程timer
Image clockp,gif1,gif2,clock6,clock7; //clockp:闹钟的外壳,闹铃和报时鸟
int s,m,h,hh;
AudioClip ipAu,danger,chirp;
boolean canPaint=true;
boolean flag=false;
boolean strike=true;
int counter=0;
int lasts;
Image offscreen_buf=null;
int i,j,t=0;
int timeout=166;
int lastxs=0,lastys=0,lastxm=0,lastym=0,lastxh=0,lastyh=0;
Date dummy=new Date(); //生成Data对象
GregorianCalendar cal=new GregorianCalendar();
SimpleDateFormat df=new SimpleDateFormat("yyyy MM dd HH:mm:ss");//设置时间格式
String lastdate=dfformat(dummy);
Font F=new Font("TimesRoman",FontPLAIN,14);//设置字体格式
Date dat=null;
Date timeNow=null;
Color fgcol=Colorblue;
Color fgcol2=ColordarkGray;
Panel setpanel;
Color backcolor=Colorpink;
TextField showhour,showmin,showsec,sethour,setmin,setsec;//显示当前时间文本框和定时文本框
Button onbutton;
Button offbutton;
Label hlabel1,mlabel1,slabel1,hlabel2,mlabel2,slabel2;//显示时间单位时所用的标签(时、分、秒)
Label info1=new Label("欢迎使用定时提醒闹钟"),info2=new Label("");
Label note1=new Label("当前时间:"),note2=new Label("闹钟设置:");
boolean setalerm=false,clickflag=false;//判断是否响铃和振动
int fixh=0,fixm=0,fixs=0;//记录闹钟的定时
public void init()//初始化方法
{
Integer gif_number;
int fieldx=50,fieldy1=120,fieldy2=220,fieldw=30,fieldh=20,space=50;//显示时间和定时文本框的定位参数
setLayout(null); //将布局管理器初始化为null
setpanel=new Panel();
setpanelsetLayout(null);
setpaneladd(note1);
setpaneladd(note2);
note1setBounds(30,100,60,20);
note1setBackground(backcolor);
note1setForeground(Colorblack);
note2setBounds(30,180,60,20);
note2setBackground(backcolor);
note2setForeground(Colorblack);
hlabel1=new Label();
mlabel1=new Label();
slabel1=new Label();
hlabel2=new Label();
mlabel2=new Label();
slabel2=new Label();
//显示当前时间用的文本框
showhour=new TextField("00",5);
showmin=new TextField("00",5);
showsec=new TextField("00",5);
//定时用的文本框(时、分、秒)
sethour=new TextField("00",5);
setmin=new TextField("00",5);
setsec=new TextField("00",5);
//当前时间用的文本框的位置、大小
setpaneladd(showhour);
showhoursetBounds(fieldx,fieldy1,fieldw,fieldh);
showhoursetBackground(Colorwhite);
//在文本框后加入单位“时”
setpaneladd(hlabel1);
hlabel1setText("时");
hlabel1setBackground(backcolor);
hlabel1setForeground(Colorblack);
hlabel1setBounds(fieldx+fieldw+3,fieldy1,14,20);
fieldx=fieldx+space;
//当前时间的分钟文本框的位置、大小
setpaneladd(showmin);
showminsetBounds(fieldx,fieldy1,fieldw,fieldh);
showminsetBackground(Colorwhite);
//在文本框后加入单位“分”
setpaneladd(mlabel1);
mlabel1setText("分");
mlabel1setBackground(backcolor);
mlabel1setForeground(Colorblack);
mlabel1setBounds(fieldx+fieldw+3,fieldy1,14,20);
fieldx=fieldx+space;
//当前时间的秒文本框的位置、大小
setpaneladd(showsec);
showsecsetBounds(fieldx,fieldy1,fieldw,fieldh);
showsecsetBackground(Colorwhite);
//在文本框后加入单位“秒”
setpaneladd(slabel1);
slabel1setText("秒");
slabel1setBackground(backcolor);
slabel1setForeground(Colorblack);
slabel1setBounds(fieldx+fieldw+3,fieldy1,14,20);
fieldx=50;
//定时的小时文本框的位置、大小
setpaneladd(sethour);
sethoursetBounds(fieldx,fieldy2,fieldw,fieldh);
sethoursetBackground(Colorwhite);
//在文本框后加入单位“时”
setpaneladd(hlabel2);
hlabel2setText("时");
hlabel2setBackground(backcolor);
hlabel2setForeground(Colorblack);
hlabel2setBounds(fieldx+fieldw+3,fieldy2,14,20);
fieldx=fieldx+space;
//定时的分钟文本框的位置、大小
setpaneladd(setmin);
setminsetBounds(fieldx,fieldy2,fieldw,fieldh);
setminsetBackground(Colorwhite);
//在文本框后加入单位“分”
setpaneladd(mlabel2);
mlabel2setText("分");
mlabel2setBackground(backcolor);
mlabel2setForeground(Colorblack);
mlabel2setBounds(fieldx+fieldw+3,fieldy2,14,20);
fieldx=fieldx+space;
//定时的秒文本框的位置、大小
setpaneladd(setsec);
setsecsetBounds(fieldx,fieldy2,fieldw,fieldh);
setsecsetBackground(Colorwhite);
//在文本框后加入单位“秒”
setpaneladd(slabel2);
slabel2setText("秒");
slabel2setBackground(backcolor);
slabel2setForeground(Colorblack);
slabel2setBounds(fieldx+fieldw+3,fieldy2,14,20);
//设置闹钟控制按钮(on,off)
onbutton=new Button("开");
offbutton=new Button("关");
setpaneladd(onbutton);
setpaneladd(offbutton);
onbuttonsetBounds(90,180,40,20);
offbuttonsetBounds(140,180,40,20);
//加入一些附加的信息标签(题头,题尾)
setpaneladd(info1);
info1setBackground(backcolor);
info1setForeground(Colorblue);
info1setBounds(50,50,150,20);
setpaneladd(info2);
info2setBackground(backcolor);
info2setForeground(Colorblue);
info2setBounds(150,280,100,20);
//将面板加入当前容器中,并设置面板的大小和背景色
add(setpanel);
setpanelsetBounds(300,1,250,420);
setpanelsetBackground(backcolor);
//获取声音文件
ipAu=getAudioClip(getDocumentBase(),"bells/仙剑mid");
danger=getAudioClip(getDocumentBase(),"bells/0mid");
chirp=getAudioClip(getDocumentBase(),"bells/3mid");
int xcenter,ycenter,s,m,h;
xcenter=145;
ycenter=162;
s=(int)calget(CalendarSECOND);
m=(int)calget(CalendarMINUTE);
h=(int)calget(CalendarHOUR_OF_DAY);
//初始化指针位置
lastxs=(int)(Mathcos(s314f/30-314f/2)30+xcenter);
lastys=(int)(Mathsin(s314f/30-314f/2)30+ycenter);
lastxm=(int)(Mathcos(m314f/30-314f/2)25+xcenter);
lastym=(int)(Mathsin(m314f/30-314f/2)25+ycenter);
lastxh=(int)(Mathcos((h30+m/2)314f/180-314f/2)18+xcenter);
lastyh=(int)(Mathsin((h30+m/2)314f/180-314f/2)18+ycenter);
lasts=s;
MediaTracker mt=new MediaTracker(this);//创建Tracke对象
clockp=getImage(getDocumentBase(),"休闲png");
gif1=getImage(getDocumentBase(),"gif1gif");
gif2=getImage(getDocumentBase(),"gif2gif");
clock6=getImage(getDocumentBase(),"clock6gif");
clock7=getImage(getDocumentBase(),"clock7gif");
mtaddImage(clockp,i++);
mtaddImage(gif1,i++);
mtaddImage(gif2,i++);
mtaddImage(clock6,i++);
mtaddImage(clock7,i++);
try{mtwaitForAll();}catch(InterruptedException e){};//等待加载结束
resize(600,420);//设置窗口大小
}
public void paint(Graphics g){//重写paint()方法
int xh,yh,xm,ym,xs,ys,strike_times;
int xcenter,ycenter;
String today;
Integer gif_number;
xcenter=148;
ycenter=186;
dat=new Date();
calsetTime(dat);
//读取当前时间
s=(int)calget(CalendarSECOND);
m=(int)calget(CalendarMINUTE);
h=(int)calget(CalendarHOUR_OF_DAY);
today=dfformat(dat);
//指针位置
xs=(int)(Mathcos(s314f/30-314f/2)30+xcenter);
ys=(int)(Mathsin(s314f/30-314f/2)30+ycenter);
xm=(int)(Mathcos(m314f/30-314f/2)25+xcenter);
ym=(int)(Mathsin(m314f/30-314f/2)25+ycenter);
xh=(int)(Mathcos((h30+m/2)314f/180-314f/2)18+xcenter);
yh=(int)(Mathsin((h30+m/2)314f/180-314f/2)18+ycenter);
//设置字体和颜色
gsetFont(F);
gsetColor(fgcol);
gsetColor(fgcol2);
gsetColor(getBackground());
gfillRect(1,1,634,419);
gdrawImage(clockp,75,110,this);
gdrawImage(clock6,83,280,this);
gsetColor(fgcol2);
gsetColor(getBackground());
gsetColor(fgcol2);
//以数字方式显示年、月、日和时间
gdrawString(today,55,415);
gdrawLine(xcenter,ycenter,xs,ys);
gsetColor(fgcol);
//画指针
gdrawLine(xcenter,ycenter-1,xm,ym);
gdrawLine(xcenter-1,ycenter,xm,ym);
gdrawLine(xcenter,ycenter-1,xh,yh);
gdrawLine(xcenter-1,ycenter,xh,yh);
lastxs=xs;lastys=ys;
lastxm=xh;lastym=ym;
lastxh=xh;lastyh=yh;
lastdate=today;
if(h<12)hh=h;//将系统时间变换到0-11区间
else hh=h-12;
if(hh==0) strike_times=12;//计算整点时钟声数
else strike_times=hh;
if((s==0&&m==0)||flag){//判断是否整点,是否是主动刷新
if(counter<strike_times){
flag=true;
gdrawImage(gif2,115,35,this);
if(lasts!=s){
if(strike){
counter++;
dangerplay();//播放闹铃声
}
if(strike)strike=false;
else strike=true;
}
}
else {
counter=0;
flag=false;
}
}
else
gdrawImage(gif1,115,35,this);
int timedelta;//记录当前时间与闹铃定时的时差
Integer currh,currm,currs;//分别记录当前的时、分、秒
timeNow=new Date();
currh=new Integer(timeNowgetHours());
currm=new Integer(timeNowgetMinutes());
currs=new Integer(timeNowgetSeconds());
//判断是否要更新当前显示的时间,这样可以避免文本框出现频率闪动
if(currhintValue()!=IntegervalueOf(showhourgetText())intValue())
showhoursetText(currhtoString());
if(currmintValue()!=IntegervalueOf(showmingetText())intValue())
showminsetText(currhtoString());
if(currsintValue()!=IntegervalueOf(showsecgetText())intValue())
showsecsetText(currhtoString());
if(setalerm){ //判断是否设置了闹钟
//判断当前时间是否为闹钟所定的时间
if((currhintValue()==fixh)&&(currmintValue()==fixm)&&(currsintValue()==fixs))
clickflag=true;
timedelta=currmintValue()60+currsintValue()-fixm60-fixs;
if((timedelta<60)&&(clickflag==true)){ //若当前时间与闹钟相差时间达到60秒
chirpplay();
gdrawImage(clock7,83,280,this);
}
else{
chirpstop();
clickflag=false;
}
}
if(lasts!=s)
ipAuplay();//播放滴答声
lasts=s;
if(canPaint){
t+=1;
if(t==12)t=0;
}
canPaint=false;
dat=null;
}
public void start(){
if(timer==null){
timer=new Thread(this);//将timer实例化
timerstart();
}
}
public void stop(){
timer=null;
}
public void run(){
while(timer!=null){
try{timersleep(timeout);}catch(InterruptedException e){}
canPaint=true;
repaint();//刷新画面
}
timer=null;
}
public void update(Graphics g){ //采用双缓冲技术的update()方法
if(offscreen_buf==null)
offscreen_buf=createImage(600,420);
Graphics offg=offscreen_bufgetGraphics();
offgclipRect(1,1,599,419);
paint(offg);
Graphics ong=getGraphics();
ongclipRect(1,1,599,419);
ongdrawImage(offscreen_buf,0,0,this);
}
public boolean action(Event evt,Object arg){ //按钮事件处理函数
if(evttarget instanceof Button){
String lable=(String)arg;
if(lableequals("开")){
setalerm=true;
//获取输入的时间
fixh=IntegervalueOf(sethourgetText())intValue();
fixm=IntegervalueOf(setmingetText())intValue();
fixs=IntegervalueOf(setsecgetText())intValue();
clickflag=false;
}
if(lableequals("关")){
setalerm=false;
if(chirp!=null)
chirpstop();
clickflag=false;
}
return true;
}
return false;
}
}
流程图软件比较好用的有:
1、亿图图示是一款专业流程图工具。全拖曳式 *** 作,丰富的符号库和实例,附带丰富的流程图实例和模板库,使用起来无需教程直接上手。
2、visualgraph专业图形系统:此系统为图形控件,在NET开发平台下可以灵活应用,delphi中也可以使用。简单易用,业内应用较广泛。
3、Visio可广泛应用于电子、机械、通信、建筑、软件设计和企业管理等众多领域。
4、powerdesigner是一款比较不错的画流程图软件。
5、SAM业务流程梳理工具软件,为流程从业者梳理流程业务提供便捷、标准化的建模工具,为开展流程梳理、固化、发布工作提供工具支持。
6、visio是微软公司推出的非常传统的流程图软件,应用范围广泛。采用泳道图的方式能够把流程和流程的部门以及岗位关联起来,实现流程和所有者的对应。随着企业对流程管理应用需求的提升,片段、静态的方式逐渐很难适应企业实际流程管理的需要。
7、control是英国nimbus公司的流程软件,采用全息的方式能够展示流程的基本要素,包括活动、输入输出、角色以及相关的文档等各种信息。具有简洁易用的特性,不支持多维度扩展应用。
8、aris是IDS公司的流程软件,具有IDS特有的多维建模和房式结构,集成了流程管理平台,可以通过流程平台进行流程分析和流程管理。
9、provision是metastorm公司的流程软件,以多维度系统建模见长,能够集成企业的多种管理功能,是流程管理专家级客户应用的工具。
10、框图宝(MyFlowChart)是youfabao的在线流程图软件,可以在线绘制流程图,简单易用,基于云计算,数据丢失。
11、ProcessOn是一个面向商业流程用户的专业社交网络,成立于2011年6月并于2012年启动。ProcessOn将专家顾问、咨询机构、BPM厂商、IT解决方案厂商和广泛的企业用户连接在一起,提供基于云服务的流程梳理、创作协作工具,与同事和客户协同设计,实时创建和编辑流程,改善人们对流程图的创作过程。
扩展资料
优缺点
优点:形象直观,各种 *** 作一目了然,不会产生“歧义性”,便于理解,算法出错时容易发现,并可以直接转化为程序。
缺点:所占篇幅较大,由于允许使用流程线,过于灵活,不受约束,使用者可使流程任意转向,从而造成程序阅读和修改上的困难,不利于结构化程序的设计
如果你有兴趣在android上设计一些游戏,那么我这儿有一些对你有所帮助的东西,我是androidMarket上一个名为LightRacer的小赛车游戏的开发者,虽然在此之前我也曾开发过游戏,但这仍然是我的第一个android上的应用,在这个过程中我学到了很多在android上开发游戏的经验,并且,我也很乐意将这一切与你分享。好了,让我们开始吧,如果你之前做过游戏的开发,那么转移到android这样的移动平台上并不是件难事,你要做的只是学习一下新的架构与API,如果你是一个新手,我这儿也为你准备了一个入门清单,它适用于任何类型的游戏开发,比如动作类、策略类、模拟类或者智力类。
开启分步阅读模式
*** 作方法
01、在这门课最后,你会完成一个可以运行在安卓机或者安卓平板上的游戏。你可以与你的家人朋友分享它,用你的新知识进一步改进你的游戏,或者完全自己创造一个游戏。
02、如果你有兴趣在android上设计一些游戏,那么我这儿有一些对你有所帮助的东西,我是androidMarket上一个名为LightRacer的小赛车游戏的开发者,虽然在此之前我也曾开发过游戏,但这仍然是我的第一个android上的应用,在这个过程中我学到了很多在android上开发游戏的经验,并且,我也很乐意将这一切与你分享。好了,让我们开始吧,如果你之前做过游戏的开发,那么转移到android这样的移动平台上并不是件难事,你要做的只是学习一下新的架构与API,如果你是一个新手,我这儿也为你准备了一个入门清单,它适用于任何类型的游戏开发,比如动作类、策略类、模拟类或者智力类。
03、获取SDK第一步当然是下载并安装android的SDK〔软件开发套件〕,这套SDK主要包括有核心库文件,一个模拟器,开发工具和一些示范的样例文件。我强烈推荐你使用Eclipse和androideclipse扩展。如果你只是使用android,EclipseIDE就已经足够了,但如果这是你第一次开发Java应用,建议你还是下载完整的
04、学习应用架构就像迷人的内在美一样,这是理解
android应用架构的关键,如果你不学习它,你设计出来的游戏将是一种很难修复bug的产品。你需要了解应用程序、活动、Intents以及它们是如何互相联系交互的,Google在这儿提供了良好的信息架构。真正重要的是,你要理解为什么在你设计的游戏中需要不止一个的活动进程以及如何设计一个用户体验良好的游戏。这些都应当配合到应用的生命周期中。
05、学习应用的生命周期应用的生命周期是由AndroidOS *** 作系统进行管理的,你的活动进程都将做为系统命令进行创建,正确处理这些事件对一个应用程序来说是极为重要的,因为终端用户不会知道什么是正确的。最好在开始设计你的游戏之前搞明白这些,因为这有助于节省你的调试时间以及避免代价高昂的重新设计。
06、对大多数应用而言,默认设置即可开始工作,但对游戏而言,你可能需要调整单态实例的信号为打开。在默认情况下,Android会新建一个活动实例进程,因为它认为这是比较合适的,而游戏,你可能只希望有一个活动的实例进程,这有一点儿影响,它需要你了解一些系统状态的管理,但对我来说,它解决了资源管理的问题,还是值得的。
制作微信的小程序,需要在微信公众号的首页注册,进入小程序之后填写相关的信息,邮箱要激活,进入邮箱查看微信的激活邮件,点击链接激活,根据选择的主体类型是个人还是企业,准备相关证件,按要求填写信息,完成后补全小程序的信息即可。
制作微信小程序的方法
1、在微信的公众号首页,点击注册,选择注册类型“小程序”。
2、进入小程序,填写相关的信息,邮箱要按照要求来填写,邮箱需要激活,进入您的邮箱后点击激活。
3、进入邮箱之后查看来自微信的激活邮件,点击链接激活账号,当邮箱激活后,页面会跳转到信息登记页面再次填写信息,需选择主体类型。选择个人,根据提示填写内容即可,选择企业,需要准备好营业执照注册号,然后填写内容。
4、点击确定后前往小程序,在完成微信认证之后就可以创建自己的小程序。最后点击填写,补全小程序的基本信息,需要改好小程序的名称、,写好120字以内的简介,完成后发布即可。
如何创建一个微信小程序,这里有个图文版请收下:
1、登陆微信公众平台;
2、选择「立即注册」;
3、选择「小程序」;
4、填写邮箱,按提示在邮箱进行验证;
5、按提示选择主体类型进行注册。
就是这么简单,你学会了吗?注册一个微信小程序,仅仅只需要5分钟
微信小程序是一种不需要下载安装即可使用的应用,用户扫一扫或者搜一下即可打开应用,做一个微信小程序首先需要经过注册及审批,之后再获取开发文档根据规范进行开发就可以了,懂程序的可以依靠开发者工具自行开发,或者外包给专业的小程序制作开发团队。
怎么做一个微信小程序
注册阶段
一、首先你要确定小程序的定位、目的以及文案资料等(准备工作)。
二、打开微信公众平台官网,点击右上角的“立即注册”
三、在“选择注册的类型中”选择“小程序”
四、完善账号信息
五、邮箱激活公众平台账号
六、完善信息登记。
按照流程信息填写完成后则代表认证成功,这时则可以开始创建小程序了
开发阶段
一、登录微信公众平台
就能在菜单“开发”---“基本配置”中看到小程序的AppID了
小程序的 AppID 相当于小程序平台的一个身份z,后续你会在很多地方要用到 AppID (注意这里要区别于服务号或订阅号的 AppID)。
有了小程序帐号之后,我们需要一个工具来开发小程序。
二、前往“开发者工具”下载页面,安装“开发工具”,开发工具有windows64、windows32、mac三个版本,可根据实际情况,选择适合自己电脑的开发工具。
安装后,就可以直接启动开发者工具了。
三、在小程序管理页面,点击“添加项目”
四、填入申请到的小程序的AppID、项目名称
五、然后点击“选择”,新建一个文件夹作为新的项目目录。再次点击“添加项目”,就可以新建出一个微信小程序项目了。懂程序的可以依靠开发者工具自行开发。但是如果你只是个小白,那你可能就需要专业的小程序制作开发平台来帮你。
六、制作完成的小程序提交到腾讯审核,一般待7-14个工作日审核通过后你就可以拥有自己公司的微信小程序了。
以上就是关于跪求高手帮忙写一个JAVA手机闹钟程序 实现添加铃声和设置多闹钟全部的内容,包括:跪求高手帮忙写一个JAVA手机闹钟程序 实现添加铃声和设置多闹钟、手机制作流程图用哪个软件比较好、手机上怎么编程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)