Java课程设计实验报告及全部源码流程图(7)

2020-04-18 07:13

new Timer(delay1,drawClock1).start(); } }

这里主要用来在创建时钟主窗口以及为给是添加监视器啊使其能够完成整点报时的功能。

DrawClock.java

import javax.swing.*; import java.awt.*;

import java.util.Calendar;

import java.util.GregorianCalendar; import java.io.*; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.util.Date;

public class DrawClock extends JPanel{

//参数定义区 int

x,y,x0,y0,r,h,w,olds_x=-100,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,hh,old_h;//x0,y0圆心

double ang,mm,ss,old_m;

final double RAD=Math.PI/180;//定义弧度、角度转换常数 JButton set;//\设置\按钮 Icon icon;//按钮图片

//DrawClock构造方法 public DrawClock(){

java.awt.event.ActionListener; import

java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import

this.setLayout(null);//设置布局为空 icon=new ImageIcon(\ set=new JButton(icon);

set.setMnemonic(KeyEvent.VK_ALT);//设置按钮快捷键为:“Alt” set.setSize(30,30);//按钮大小

add(set);

set.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ try {

Process p=Runtime.getRuntime().exec( \//调用Windows时间设置

//按钮添加监听

Timedate.cpl\

}

catch(Exception m){}

}

});

//添加计时器 时间间隔为0.1s int delay = 100;

ActionListener drawClock = new ActionListener(){ public void actionPerformed(ActionEvent evt){

new Timer(delay,drawClock).start(); }

//绘制图像

public void paint(Graphics g){

//参数定义区

Graphics2D g2D = (Graphics2D)g;

repaint();//重画界面

} };

//L和T分别是窗口边缘宽度的一半 h = getSize().height;//h为窗口高度 w = getSize().width; g2D.setColor(Color.white); //设置前景色

r=h/2-30;//计算半径r的值 x0=w/2+35;

y0=h/2+10; //计算圆心坐标 int fs = r/7; //计算字体大小 //调整窗口大小使合适

//获取当前时间

Calendar now=Calendar.getInstance() ; int nowh= now.get(Calendar.HOUR_OF_DAY); int nowm= now.get(Calendar.MINUTE); int nows= now.get(Calendar.SECOND); int noww= now.get(Calendar.DAY_OF_WEEK);

//绘制时钟上的60个点

g2D.setStroke(new BasicStroke((1+h/100)/2)); for(int i=1;i<=60;i++){ x=(int)(r*Math.cos(RAD*ang)+x0); y=(int)(r*Math.sin(RAD*ang)+y0); g.setColor(Color.BLACK); g.drawLine(x,y,x,y); ang-=6;

}

//绘制时钟上的12个数

for(int i=12,ang=270;i>=1;i--){ g.setFont(new Font(\Unicode\

x=(int)((r-15)*Math.cos(RAD*ang)+x0);

Sans

y=(int)((r-15)*Math.sin(RAD*ang)+y0); g.drawString(\ang-=30;

}

//绘制时钟上的12个点 ang=60;

g2D.setStroke(new BasicStroke(1+h/100)); for(int i=1;i<=12;i++){

x=(int)(r*Math.cos(RAD*ang)+x0); y=(int)(r*Math.sin(RAD*ang)+y0); g.drawLine(x,y,x,y); ang-=30; }

//在窗体上显示时间 String st;

if(nowh<10) st=\ if(nows%2==0) st+=\ if(nowm<10) st+=\

g.setFont(new Font(\ g.setColor(new Color(180,180,180,180)); g.drawString(\ g.setColor(Color.BLACK);

g.drawString(st,x0-r*3/2,y0-r+fs/2); //在窗体显示秒数

if(nows<10)

g.setFont(new Font(\Mono\样式常量

g.setColor(new Color(180,180,180,180)); g.drawString(\ g.setColor(Color.BLACK);

g.drawString(st,x0-fs/2,2*r/3+y0);

st=\

else st=\

//显示AM、PM

if(nowh<12) st=\

g.setFont(new Font(\ g.setColor(Color.BLACK);

g.drawString(st,x0-fs/2,y0-2*r/3+3*fs/4); //显示星期

switch (noww) {

g.setFont(new Font(\ g.setColor(Color.BLACK);

g.drawString(st,x0-r*3/2,y0-r+3*fs/2); //计算指针与度数的关系 if(h>=150){ ss=90-nows*6;

mm=90-nowm*6-(0.1*nows); hh=90-nowh*30-nowm/2;

//擦除秒针

g2D.setStroke(new BasicStroke(2f)); if(olds_x>0){

g.setColor(getBackground());

g.drawLine(x0,y0,olds_x,2*y0-olds_y); case 1: st=\case 2: st=\case 3: st=\case 4: st=\case 5: st=\case 6: st=\case 7: st=\

}

} else{

old_m = mm; old_h = hh;


Java课程设计实验报告及全部源码流程图(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国医学独立实验室现状及发展前景分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: