时钟编程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class ct extends Applet
{
TextField year,month;
Button button;
int flag=0;
public void init()
{
g.drawLine(xcenter,ycenter,lastxs,lastys);
}
if(xm!=lastxm||ym!=lastym)
{
g.drawLine(xcenter,ycenter-1,lastxm,lastym);
g.drawLine(xcenter-1,ycenter,lastxm,lastym);
2.时钟程序设计
(1)定义时钟类Clock; (2)在类中,设计一个时钟调整函数AddSecond();(3)在函数main()中,利用Thread.sleep()函数,实现时间的实时显示。也可使用Applet编程。
设计思路与源程序
由于很多的知识未学到并且短时间内难以灵活运用,故结合网上的程序和书上的实例编出
g.setFont(new Font("TimesToman",Font.PLAIN,14));
g.setColor(Color.orange);
g.fill3DRect(xcenter-50,ycenter-50,100,100,true);
g.setColor(Color.darkGray);
g.drawString("12",xcenter-5,ycenter-37);
实验
实验目的和要求
1.熟悉java小应用程序设计方法;
2.进一步熟练java控制语句的应用技术;
3.掌握面向对象编程基本概念
4.熟悉类的定义及运用等基础知识。
5.掌握对象的声明、创建以及构造函数的执行过程。
6.学习和掌握面向对象的编程方法。
实验内容
设计思路与源程序
由课本上P236及P45面的程序的样例加上老师所给的程序稍加调试
{
public void actionPerformed(ActionEvent e)
{
TextField text;
text=(TextField)(e.getSource());
}
}
class ButtonAct implements ActionListener
{
public void actionPerformed(ActionEvent e)
String title[]={"日","一","二","三","四","五","六"} ;
int i,j,k;
if(flag==1)
{
for(i=0;i<7;i++)
g.drawString(title[i],50+i*50,50);
// g.drawString(String.valueOf(ye),20,80);
k=m_weekday;k++;
for(m_day=1; m_day<=m_days; m_day++ ,++k)
{
g.drawString(String.valueOf(m_day),k*50,50+f*50);
if ( k == 7)
{f++;
k=0;
}
}
}
}
}
运行结果
分析与讨论
通过这一实验,可以理解applet程序的基本框架的实现,但是由于是没有系统的学习,对有关操作的原因不清楚。不明白类和函数的具体运行情况及规则。本程序可以在学完相关知识后能使得所呈现的界面更美观,功能更强大
// g.drawString(String.valueOf(mo),70,80);
int m_days,//每月的天数
m_day,//每月日期(初值=1号)
m_weekday;//该日的星期数(初值是该月1号的星期数)
int f=1;
m_weekday = Get1stDay(ye);//每年1月1号是星期几
lastys=ys;
lastxm=xm;
lastym=ym;
lastxh=xh;
lastyh=yh;
}
public void start()
{
if(timer==null)
{
timer=new Thread(this);
timer.start();
}
}
public void stop()
{
timer=null;
{
if(e.getSource()==button)
{
ye=Integer.parseInt(year.getText());
mo=Integer.parseInt(month.getText());
flag=1;
repaint();
}
}
}
public void paint(Graphics g)
{
{
year=new TextField(6);
month=new TextField(6);
button=new Button("确定");
add(year);
add(month);
add(button);
year.addActionListener(new TextAct());
month.addActionListener(new TextAct());
xcenter=100;
ycenter=100;
xs=(int)(Math.cos(s*3.14f/30-3.14f/2)*45+xcenter);
ys=(int)(Math.sin(s*3.14f/30-3.14f/2)*45+ycenter);
xm=(int)(Math.cos(m*3.14f/30-3.14f/2)*45+xcenter);
}
}
运行结果
分析与讨论
ym=(int)(Math.sin(m*3.14f/30-3.14f/2)*45+ycenter);
xh=(int)(Math.cos((h*30+m*2)*3.14f/180-3.14f/2)*30+xcenter);
yh=(int)(Math.sin((h*30+m*2)*3.14f/180-3.14f/2)*30+ycenter);
import java.awt.Color;
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.awt.Toolkit;
public class clock4 extends Applet implements Runnable
}
if(xh!=lastxh||yh!=lastyh)
{
g.drawLine(xcenter,ycenter-1,lastxh,lastyh);
g.drawLine(xcenter-1,ycenter,lastxh,lastyh);
}
g.setColor(Color.red);
g.drawLine(xcenter,ycenter,xs,ys);
setBackground(Color.white);
Calendar now = new GregorianCalendar();
s = now.get(Calendar.SECOND);//获得秒转换成度数
m = now.get(Calendar.MINUTE);//获得分钟
h = now.get(Calendar.HOUR_OF_DAY);//获得小时
button.addActionListener(new ButtonAct());
}
int ye,mo;
//-------------计算每年第一天是星期几。
int Get1stDay(int year)
{
int y = yeaBiblioteka Baidu-1;
return (y+y/4-y/100+y/400+1)%7;
}
public void run()
{
while(timer!=null)
{
try
{
Thread.sleep(1000);
}
catch(InterruptedException ie){}
repaint();
}
timer=null;
}
public void update(Graphics g)
{
paint(g);
{
int[] MonthDays={31,28,31,30,31,30,31,31,30,31,30,31};
return (i==2 && IsLeap(year)==1 ) ? 29 : MonthDays[i-1];
}
class TextAct implements ActionListener
g.drawString("3",xcenter+40,ycenter+3);
g.drawString("6",xcenter-3,ycenter+45);
g.drawString("9",xcenter-45,ycenter+3);
g.setColor(Color.orange);
if(xs!=lastxs||ys!=lastys)
{
Thread timer=null;
Label label;
int lastxs=50,lastys=30,lastxm=50,lastym=30,lastxh=50,lastyh=30;
public void paint(Graphics g)
{
int xh,yh,xm,ym,xs,ys,s,m,h,xcenter,ycenter;
//..........生成单列日历表
m_days=0;
for(i=1; i<mo; i++) // month月前的总天数
m_days +=GetMonthDays(ye,i);
m_weekday = (m_weekday+m_days)%7; //month月1号是星期几
m_days = GetMonthDays(ye,mo);//每月天数
}
//-------------判断是否为闰年。
int IsLeap(int year)
{
return (year%4==0&&year%100!=0||year%400==0) ? 1 : 0;
}
//-------------计算每个月多少天。
int GetMonthDays(int year, int i)
g.drawLine(xcenter,ycenter-1,xm,ym);
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);
lastxs=xs;
相关文档
最新文档