仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1331|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:一个典范的JAVA APPLET时钟程序(一)

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:54:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?程序<P>转眼间一年又要过了,本人又老了一岁,忧郁啊。趁着另有几分钟才新年,从速再发几篇文章,给已往的一年添点工具。

该程序是从网上发明的,是一个复杂的时钟显现程序。
代码特征:
时钟代码供应了各类接口,能够在HTML文件中设置,变更出多姿多彩的时钟模子,
参数申明见代码内info数组
时钟的绘制接纳双缓冲图形处置机制,即先在缓冲区内绘制图形,再把图形显现到网页上能够无效的避免闪灼。
别的时钟的不休绘制是经由过程一个线程不休读取体系工夫,假如工夫有变更即绘制。接纳一个线程绘制,一个线程处置网页对照切合APPLET设置标准。

代码部分:

importjava.awt.*;
importjava.applet.*;
importjava.util.*;
importjava.net.*;
classHmsextendsDate
{
publicHms(doublelocalOffset){//假如HTML文件中设置了时区,则把工夫设为外地时区工夫
super();
longtzOffset=getTimezoneOffset()*60L*1000L;
localOffset*=3600000.0;
setTime(getTime()+tzOffset+(long)localOffset);
}
publicHms(){//假如没有设置时区,则就利用外地的工夫
super();
}
publicdoubleget_hours()//工夫换算,把如5:30如许的工夫换算成5.5
{
return(double)super.getHours()+(double)getMinutes()/60.0;
}
}
abstractclassClockHand//笼统类,供应时针、分针、秒针类利用
{
protectedintbaseX[],baseY[];
protectedinttransX[],transY[];
protectedintnumberOfPoints;
publicClockHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
baseX=newint[points];baseY=newint[points];
transX=newint[points];transY=newint[points];
initiallizePoints(originX,originY,length,thickness);
numberOfPoints=points;
}
abstractprotectedvoidinitiallizePoints(intoriginX,
intoriginY,
intlength,
intthickness);
abstractpublicvoiddraw(Colorcolor,doubleangle,Graphicsg);
protectedvoidtransform(doubleangle)//经由过程角度盘算出时针、分针、秒针的绘制地位
{
for(inti=0;i<numberOfPoints;i++){
transX[i]=(int)((baseX[0]-baseX[i])*Math.cos(angle)-
(baseY[0]-baseY[i])*Math.sin(angle)+
baseX[0]);
transY[i]=(int)((baseX[0]-baseX[i])*Math.sin(angle)+
(baseY[0]-baseY[i])*Math.cos(angle)+
baseY[0]);
}
}
}
//秒针利用的类
classSweepHandextendsClockHand
{
publicSweepHand(intoriginX,intoriginY,intlength,intpoints)
{
super(originX,originY,length,0,points);
}
protectedvoidinitiallizePoints(intoriginX,intoriginY,intlength,intunused)//初始化点
{
baseX[0]=originX;baseY[0]=originY;
baseX[1]=originX;baseY[1]=originY-length/5;
baseX[2]=originX;baseY[2]=originY+length;
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制秒针,为线段
{
transform(angle);
g.setColor(color);
g.drawLine(transX[1],transY[1],transX[2],transY[2]);
}
}
classHmHandextendsClockHand
{
publicHmHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
super(originX,originY,length,thickness,points);
}
protectedvoidinitiallizePoints(intoriginX,//初始化点
intoriginY,
intlength,
intthickness)
{
baseX[0]=originX;
baseY[0]=originY;
baseX[1]=baseX[0]-thickness/2;
baseY[1]=baseY[0]+thickness/2;
baseX[2]=baseX[1];
baseY[2]=baseY[0]+length-thickness;
baseX[3]=baseX[0];
baseY[3]=baseY[0]+length;
baseX[4]=baseX[0]+thickness/2;
baseY[4]=baseY[2];
baseX[5]=baseX[4];
baseY[5]=baseY[1];
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制时针分针,为多边形
{
transform(angle);
g.setColor(color);
g.fillPolygon(transX,transY,numberOfPoints);
}
}
Hms类是举行工夫换算的类
ClockHand是绘制指针的笼统基类,同时供应将角度转换为坐标的办法
SweepHand是秒针绘制利用的类
HmHand是时针分针绘制利用的类

主函数看后续部分





转眼间一年又要过了,本人又老了一岁,忧郁啊。趁着另有几分钟才新年,从速再发几篇文章,给已往的一年添点工具。

该程序是从网上发明的,是一个复杂的时钟显现程序。
代码特征:
时钟代码供应了各类接口,能够在HTML文件中设置,变更出多姿多彩的时钟模子,
参数申明见代码内info数组
时钟的绘制接纳双缓冲图形处置机制,即先在缓冲区内绘制图形,再把图形显现到网页上能够无效的避免闪灼。
别的时钟的不休绘制是经由过程一个线程不休读取体系工夫,假如工夫有变更即绘制。接纳一个线程绘制,一个线程处置网页对照切合APPLET设置标准。

代码部分:

importjava.awt.*;
importjava.applet.*;
importjava.util.*;
importjava.net.*;
classHmsextendsDate
{
publicHms(doublelocalOffset){//假如HTML文件中设置了时区,则把工夫设为外地时区工夫
super();
longtzOffset=getTimezoneOffset()*60L*1000L;
localOffset*=3600000.0;
setTime(getTime()+tzOffset+(long)localOffset);
}
publicHms(){//假如没有设置时区,则就利用外地的工夫
super();
}
publicdoubleget_hours()//工夫换算,把如5:30如许的工夫换算成5.5
{
return(double)super.getHours()+(double)getMinutes()/60.0;
}
}
abstractclassClockHand//笼统类,供应时针、分针、秒针类利用
{
protectedintbaseX[],baseY[];
protectedinttransX[],transY[];
protectedintnumberOfPoints;
publicClockHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
baseX=newint[points];baseY=newint[points];
transX=newint[points];transY=newint[points];
initiallizePoints(originX,originY,length,thickness);
numberOfPoints=points;
}
abstractprotectedvoidinitiallizePoints(intoriginX,
intoriginY,
intlength,
intthickness);
abstractpublicvoiddraw(Colorcolor,doubleangle,Graphicsg);
protectedvoidtransform(doubleangle)//经由过程角度盘算出时针、分针、秒针的绘制地位
{
for(inti=0;i<numberOfPoints;i++){
transX[i]=(int)((baseX[0]-baseX[i])*Math.cos(angle)-
(baseY[0]-baseY[i])*Math.sin(angle)+
baseX[0]);
transY[i]=(int)((baseX[0]-baseX[i])*Math.sin(angle)+
(baseY[0]-baseY[i])*Math.cos(angle)+
baseY[0]);
}
}
}
//秒针利用的类
classSweepHandextendsClockHand
{
publicSweepHand(intoriginX,intoriginY,intlength,intpoints)
{
super(originX,originY,length,0,points);
}
protectedvoidinitiallizePoints(intoriginX,intoriginY,intlength,intunused)//初始化点
{
baseX[0]=originX;baseY[0]=originY;
baseX[1]=originX;baseY[1]=originY-length/5;
baseX[2]=originX;baseY[2]=originY+length;
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制秒针,为线段
{
transform(angle);
g.setColor(color);
g.drawLine(transX[1],transY[1],transX[2],transY[2]);
}
}
classHmHandextendsClockHand
{
publicHmHand(intoriginX,intoriginY,intlength,intthickness,intpoints){
super(originX,originY,length,thickness,points);
}
protectedvoidinitiallizePoints(intoriginX,//初始化点
intoriginY,
intlength,
intthickness)
{
baseX[0]=originX;
baseY[0]=originY;
baseX[1]=baseX[0]-thickness/2;
baseY[1]=baseY[0]+thickness/2;
baseX[2]=baseX[1];
baseY[2]=baseY[0]+length-thickness;
baseX[3]=baseX[0];
baseY[3]=baseY[0]+length;
baseX[4]=baseX[0]+thickness/2;
baseY[4]=baseY[2];
baseX[5]=baseX[4];
baseY[5]=baseY[1];
}
publicvoiddraw(Colorcolor,doubleangle,Graphicsg)//绘制时针分针,为多边形
{
transform(angle);
g.setColor(color);
g.fillPolygon(transX,transY,numberOfPoints);
}
}
Hms类是举行工夫换算的类
ClockHand是绘制指针的笼统基类,同时供应将角度转换为坐标的办法
SweepHand是秒针绘制利用的类
HmHand是时针分针绘制利用的类

主函数看后续部分


通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-21 16:45:54 | 只看该作者
是一种为 Internet发展的计算机语言
不帅 该用户已被删除
板凳
发表于 2015-1-25 23:13:03 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-1-26 21:46:17 来自手机 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
乐观 该用户已被删除
5#
发表于 2015-1-28 23:44:03 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-1 16:08:22 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
飘飘悠悠 该用户已被删除
7#
发表于 2015-2-2 21:54:11 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
海妖 该用户已被删除
8#
发表于 2015-2-3 12:06:07 | 只看该作者
是一种突破用户端机器环境和CPU
admin 该用户已被删除
9#
发表于 2015-2-6 00:41:51 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
若相依 该用户已被删除
10#
发表于 2015-2-6 01:53:52 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
再见西城 该用户已被删除
11#
发表于 2015-2-11 00:07:19 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
再现理想 该用户已被删除
12#
发表于 2015-2-21 19:53:06 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
飘灵儿 该用户已被删除
13#
发表于 2015-3-6 20:23:26 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
因胸联盟 该用户已被删除
14#
发表于 2015-3-13 00:57:31 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
爱飞 该用户已被删除
15#
发表于 2015-3-16 03:08:06 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
简单生活 该用户已被删除
16#
发表于 2015-3-22 00:09:06 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
小妖女 该用户已被删除
17#
发表于 2015-3-22 03:09:16 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
透明 该用户已被删除
18#
发表于 2015-3-30 15:57:26 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
山那边是海 该用户已被删除
19#
发表于 2015-4-6 17:35:59 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
谁可相欹 该用户已被删除
20#
发表于 2015-4-8 05:28:42 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 22:38

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表