java时钟转动代码 java实现时钟

用java设计和编写一个指针式时钟程序,应用线程实现时钟的走动,有的发我邮箱,361390264@qq.com,谢啦?。?/h2>package 时钟;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JApplet;
/**
*
* @author Jiang
*/
public class Clock2 extends JApplet implements Runnable{
double PI=Math.PI;//圆周率
double hourlen=50;//时针长度
double minutelen=70;//分针长度
double secondlen=90;//秒针长度
int yuanxinx=100,yuanxiny=100;//圆心坐标
int banjin=100;//半径长度
int qix,qiy,zhongxh,zhongxm,zhongxs,zhongyh,zhongym,zhongys;//各指针java时钟转动代码的起点和终点坐标(起点一致)
Thread th;
BufferedImage buf;
int hour,minute,second;//记录当前时间
Calendar calendar;//用于获取当前时间
Graphics g1;//用于内存绘图
public void init(){
hour=minute=second=0;
buf=new BufferedImage(400,400,BufferedImage.TYPE_INT_ARGB);//控制内存绘图区域大小
g1=buf.getGraphics();//创建缓冲绘图区
this.setSize(400,400);
}
public void start(){
if(th==null)
th=new Thread(this);
th.start();//启动线程
}
public void stop(){
th=null;//终止线程
}
public void run(){//线程的覆盖方法
while(true){
try{
th.sleep(1000);
}catch(Exception e){}
//用背景色填充绘图区java时钟转动代码,擦除上次绘图
g1.setColor(this.getBackground());
//g1.fillRect(yuanxinx-banjin,yuanxiny-banjin,2*banjin,2*banjin);
g1.fillRect(0,0,400,400);
repaint();
}
}
public void paint(Graphics g){
//将图像先画到缓冲区
g1.setColor(this.getForeground());
//绘制时钟刻盘(刻度长度为8)
g1.drawOval(yuanxinx-banjin,yuanxiny-banjin,yuanxinx banjin,yuanxiny banjin);
//特殊位置简便画法
//g1.drawLine(yuanxinx-banjin,yuanxiny,yuanxinx-banjin 8,yuanxiny);//9
//g1.drawLine(yuanxinx,yuanxiny-banjin,yuanxinx,yuanxiny-banjin 8);//12
//g1.drawLine(yuanxinx banjin,yuanxiny,yuanxinx banjin-8,yuanxiny);//3
//g1.drawLine(yuanxinx,yuanxiny banjin,yuanxinx,yuanxiny banjin-8);//6
//1
int qixx=(int)(yuanxinx-banjin*Math.cos((0.5 1.0/6)*PI));
int qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 1.0/6)*PI));
int zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 1.0/6)*PI));
int zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 1.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//2
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 2.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 2.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 2.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 2.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//3
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 3.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 3.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 3.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 3.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//4
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 4.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 4.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 4.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 4.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//5
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 5.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 5.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 5.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 5.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//6
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 6.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 6.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 6.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 6.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//7
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 7.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 7.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 7.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 7.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//8
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 8.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 8.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 8.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 8.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//9
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 9.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 9.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 9.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 9.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//10
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 10.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 10.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 10.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 10.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//11
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 11.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 11.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 11.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 11.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//12
qixx=(int)(yuanxinx-banjin*Math.cos((0.5 12.0/6)*PI));
qiyy=(int)(yuanxiny-banjin*Math.sin((0.5 12.0/6)*PI));
zhongxx=(int)(yuanxinx-(banjin-8)*Math.cos((0.5 12.0/6)*PI));
zhongyy=(int)(yuanxiny-(banjin-8)*Math.sin((0.5 12.0/6)*PI));
g1.drawLine(qixx,qiyy,zhongxx,zhongyy);
//g1.drawLine(150,15,140,25);
//g1.drawString("" qixx " " qiyy " " zhongxx " " zhongyy,200,300);
//获取当前时间
calendar=Calendar.getInstance();
hour=calendar.get(Calendar.HOUR);
minute=calendar.get(Calendar.MINUTE);
second=calendar.get(Calendar.SECOND);
//计算指针坐标
qix=qiy=yuanxinx;
zhongxh=(int)(yuanxinx-hourlen*Math.cos((0.5 2.0*hour/12)*Math.PI));
zhongyh=(int)(yuanxiny-hourlen*Math.sin((0.5 2.0*hour/12)*Math.PI));
zhongxm=(int)(yuanxinx-minutelen*Math.cos((0.5 2.0*minute/60)*Math.PI));
zhongym=(int)(yuanxiny-minutelen*Math.sin((0.5 2.0*minute/60)*Math.PI));
zhongxs=(int)(yuanxinx-secondlen*Math.cos((0.5 2.0*second/60)*Math.PI));
zhongys=(int)(yuanxiny-secondlen*Math.sin((0.5 2.0*second/60)*Math.PI));
//绘制指针
Font oldfont=this.getFont();
g1.setColor(Color.red);
g1.setFont(new Font(oldfont.getName(),Font.BOLD,oldfont.getStyle() 20));
g1.drawLine(qix,qiy,zhongxh,zhongyh);
g1.setColor(Color.green);
g1.setFont(new Font(oldfont.getName(),Font.BOLD,oldfont.getStyle() 15));
g1.drawLine(qix,qiy,zhongxm,zhongym);
g1.setColor(Color.blue);
g1.setFont(new Font(oldfont.getName(),Font.BOLD,oldfont.getStyle() 10));
g1.drawLine(qix,qiy,zhongxs,zhongys);
//输出时间、日期
g1.setFont(new Font("Time New Roman",Font.BOLD,25));
g1.setColor(Color.PINK);
g1.drawString("" hour ":" minute ":" second,150,240);
g1.setFont(new Font("Time New Roman",Font.BOLD,18));
g1.setColor(Color.green);
g1.drawString("中国标准时间 Chinese Standard Time",25,280);
g1.setFont(new Font("Time New Roman",Font.BOLD,20));
g1.setColor(Color.blue);
g1.drawString(new Date().toString(), 25,320);
//g1.drawString("" hour " " minute " " second, 200,200);
g.drawImage(buf, 0,0, this);//将缓冲区图像画到JApplet上
}
public void update(Graphics g){//覆盖方法
paint(g);
}
}
JAVA用SWT写时钟代码#include time.h
#include stdio.h
#include stdlib.h
#define BUF_SIZE 80
int main()
{
time_t t;
struct tm *tm;
char s[BUF_SIZE];
if(time(t) == ((time_t)-1)) return 1;
tm = localtime(t);
if(!tm) return 1;
strftime(s, sizeof(s), ":%H:%M:%S", tm);
printf("%s\n", s);
system("pause");
return 0;
}
JAVA画时钟代码import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import sun.util.calendar.Gregorian;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class ClockPointer extends JFrame{
int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y,
ss,mm, hh, old_m, old_h, ang;
final double RAD = Math.PI/180;
public ClockPointer(){
super("Java时钟");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image image = getToolkit().getImage("clock.gif");
setIconImage(image);
setSize(400,400);
setBackground(Color.white);
//setLocation(300,150);
this.setLocationRelativeTo(null);
setResizable(true);
int delay = 1000;
//创建一个监听事件
setVisible(true);
ActionListener drawClock = new ActionListener(){
public void actionPerformed(ActionEvent evt){
repaint();
}
};
//创建一个时间计数器,每一秒触发一次
new Timer(delay, drawClock).start();
}
java.text.SimpleDateFormat fmTime = new java.text.SimpleDateFormat("HH:mm:ss");
//绘制图形
public void paint(Graphics g){
super.paint(g);
g.setFont(null);
Graphics2D g2D = (Graphics2D)g;
Insets insets = getInsets();
int L = insets.left/2, T = insets.top/2;
h = getSize().height;
g.setColor(Color.white);
//画圆
g2D.setStroke(new BasicStroke(2.0f));
g.setColor(Color.gray);
g.drawOval(L 40, T 40, h-80, h-80);
r = h/2 - 40;
x0 = 40r - 5L;
y0 = 40r - 5 - T;
ang = 60;
//绘制时钟上java时钟转动代码的12个字
for(int i = 1;i = 12;i){
x = (int)((r 10)*Math.cos(RAD*ang) x0);
y = (int)((r 10)*Math.sin(RAD*ang) y0);
g.setColor(Color.black);
g.drawString("" i, x, h-y);
ang -=30;
}
//获得现在java时钟转动代码的时间
Calendar now = new GregorianCalendar();
int nowh = now.get(Calendar.HOUR_OF_DAY);
int nowm = now.get(Calendar.MINUTE);
int nows = now.get(Calendar.SECOND);
String st=fmTime.format(now.getTime());
//在窗体上显示时间
g.setColor(Color.pink);
g.fillRect(L, T, 50, 28);
g.setColor(Color.blue);
g.drawString(st,L 2,T 26);
//计算时间与度数java时钟转动代码的关系
ss = 90 - nows*6;
mm = 90 - nowm*6;
hh = 90 - nowh*30 - nowm/2;
x0 = r 40 L;
y0 = r 40 T;
g2D.setStroke(new BasicStroke(1.2f));
//擦除秒针
//if(olds_x0){
//g.setColor(getBackground());
//// g.setColor(Color.gray);
//g.drawLine(x0, y0, olds_x, h-olds_y); // (?)
//}
//绘制秒针
x = (int)(r*0.9*Math.cos(RAD*ss)) x0;
y = (int)(r*0.9*Math.sin(RAD*ss)) y0-2*T;
g.setColor(Color.yellow);
g.drawLine(x0, y0, x, h-y);
olds_x = x;
olds_y = y;
g2D.setStroke(new BasicStroke(2.2f));
//擦除分针
//if(old_m!=mm){
//g.setColor(getBackground());
//g.drawLine(x0,y0,oldm_x,h-oldm_y);
//}
//绘制分针
x = (int)(r*0.7*Math.cos(RAD*mm)) x0;
y = (int)(r*0.7*Math.sin(RAD*mm)) y0-2*T;
g.setColor(Color.green);
g.drawLine(x0,y0,x,h-y);
oldm_x = x;
oldm_y = y;
old_m = mm;
g2D.setStroke(new BasicStroke(3.2f));
//擦除时针
//if(old_h!=hh){
//g.setColor(getBackground());
//g.drawLine(x0,y0,oldh_x,h-oldh_y);
//}
//绘制时针
x = (int)(r*0.5*Math.cos(RAD*hh)) x0;
y = (int)(r*0.5*Math.sin(RAD*hh)) y0-2*T;
g.setColor(Color.red);
g.drawLine(x0,y0,x,h-y);
oldh_x = x;
oldh_y = y;
old_h = hh;
}
public static void main(String[] args){
new ClockPointer();
}
}
//整理一下
求java七段数字时钟的源代码其实这个很有趣 。自己写很有意思
先画每个数字.....
每个数字图样分7段,给每一段编号,
51
6
42
3
然后设计10个长度为7的数组,作为每个数字的字体
boolean[][] font={
{true, true,true,true,true,true,false},//数字0的字样控制开关
{false, true,true,false,false,false,false},//数字1的字样控制开关
//等等等等
{true, true,true,true,false,true,true},//数字9的字样控制开关
}
或者,熟练的就用一个byte数组就够了
byte[] font={
0x3F, ////数字0的字样控制开关
0x06,//数字1的字样控制开关
//等等
0x6F//数字9的字样控制开关
}
然后画几个黑段拼出一个数字 , 对应数组显示,用6个数字实例拼出最终效果,
这是模拟真机的写法.
如果要简单,直接拿0-9共10张图片对应数值就可以了 。
JAVA时钟代码解释lz这个代码有什么看不懂的 如果这个代码看不懂的话 建议你从基础的开始学习吧
首先可以看到extends JFrame implements ActionListener 关于ActionListener 接口和JFrame 类lz有必要去看看 加入api慢慢研究下吧
int x,y,x0,y0,r,h,olds_x,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,ss,mm,hh,old_m,old_h,ang;
这些东西我也看不懂 因为你的代码不完整
final double RAD=Math.PI/180; 这个应该是算一个弧度吧
super("made by mcj and wdh"); 这句无意义 是父类的代码
setDefaultCloseOperation(3);这个方法是什么??代码不完整
setSize(300,300);设置窗体大小
setBackground(Color.white);设置背景色
setLocation(300,150); 定位
setResizable(false);不调整大小
setVisible(true);可见
后面的就没有代码了
用 java 写一个clock的类,100毫秒的时钟 求代码 。。越简单越好 。。最好有注释这里有一个时钟java时钟转动代码的类java时钟转动代码 , java时钟转动代码你看一下吧,不明白你java时钟转动代码的100毫秒的时钟 是什么意思 。
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Line2D;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class ClockAs extends Canvas implements ActionListener {
static JButton jb = new JButton("开始");
static JButton jb1 = new JButton("暂停");
Date date;
Timer secondTime;
int hour, munite, second;
Line2D secondLine, muniteLine, hourLine;
int a, b, c;
double pointSX[] = new double[60],// 用来表示秒针端点坐标的数组
pointSY[] = new double[60], pointMX[] = new double[60], // 用来表示分针端点坐标的数组
pointMY[] = new double[60], pointHX[] = new double[60], // 用来表示时针端点坐标的数组
pointHY[] = new double[60];
ClockAs() {
secondTime = new Timer(1000, this);
pointSX[0] = 0; // 12点秒针位置
pointSY[0] = -100;
pointMX[0] = 0; // 12点分针位置
pointMY[0] = -90;
pointHX[0] = 0; // 12点时针位置
pointHY[0] = -70;
double angle = 6 * Math.PI / 180; // 刻度为6度
for (int i = 0; i59; i) // 计算出各个数组中的坐标
{
pointSX[i1] = pointSX[i] * Math.cos(angle) - Math.sin(angle)
* pointSY[i];
pointSY[i1] = pointSY[i] * Math.cos(angle)pointSX[i]
* Math.sin(angle);
pointMX[i1] = pointMX[i] * Math.cos(angle) - Math.sin(angle)
* pointMY[i];
pointMY[i1] = pointMY[i] * Math.cos(angle)pointMX[i]
* Math.sin(angle);
pointHX[i1] = pointHX[i] * Math.cos(angle) - Math.sin(angle)
* pointHY[i];
pointHY[i1] = pointHY[i] * Math.cos(angle)pointHX[i]
* Math.sin(angle);
}
for (int i = 0; i60; i) {
pointSX[i] = pointSX[i]120; // 坐标平移
pointSY[i] = pointSY[i]120;
pointMX[i] = pointMX[i]120; // 坐标平移
pointMY[i] = pointMY[i]120;
pointHX[i] = pointHX[i]120; // 坐标平移
pointHY[i] = pointHY[i]120;
}
secondLine = new Line2D.Double(0, 0, 0, 0);
muniteLine = new Line2D.Double(0, 0, 0, 0);
hourLine = new Line2D.Double(0, 0, 0, 0);
secondTime.start(); // 秒针开始计时
}
public void paint(Graphics g) {
for (int i = 0; i60; i) // 绘制表盘上的小刻度和大刻度
{
int m = (int) pointSX[i];
int n = (int) pointSY[i];
if (i % 5 == 0) {
g.setColor(Color.red);
g.fillOval(m - 4, n - 4, 8, 8);
} else {
g.setColor(Color.cyan);
g.fillOval(m - 2, n - 2, 4, 4);
}
}
g.fillOval(115, 115, 10, 10); // 钟表中心的实心圆
Graphics2D g_2d = (Graphics2D) g;
g_2d.setColor(Color.red);
g_2d.draw(secondLine);
BasicStroke bs = new BasicStroke(3f, BasicStroke.CAP_ROUND,
BasicStroke.JOIN_MITER);
g_2d.setStroke(bs);
g_2d.setColor(Color.blue);
g_2d.draw(muniteLine);
bs = new BasicStroke(6f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
g_2d.setStroke(bs);
g_2d.setColor(Color.green);
g_2d.draw(hourLine);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == secondTime) {
date = new Date();
String s = date.toString();
hour = Integer.parseInt(s.substring(11, 13));
munite = Integer.parseInt(s.substring(14, 16));
second = Integer.parseInt(s.substring(17, 19)); // 获取时间中的秒
int h = hour % 12;
a = second; // 秒针端点的坐标
b = munite; // 分针端点的坐标
c = h * 5munite / 12; // 时针端点的坐标
secondLine.setLine(120, 120, (int) pointSX[a], (int) pointSY[a]);
muniteLine.setLine(120, 120, (int) pointMX[b], (int) pointMY[b]);
hourLine.setLine(120, 120, (int) pointHX[c], (int) pointHY[c]);
repaint();
}
if (e.getSource() == jb) {
secondTime.start();
}
if (e.getSource() == jb1) {
secondTime.stop();
}
}
public static void main(String args[]) {
JFrame win = new JFrame("时钟");
JPanel jp = new JPanel();
jp.add(jb);
jp.add(jb1);
ClockAs clock = new ClockAs();
jb.addActionListener(clock);
jb1.addActionListener(clock);
win.add(clock, BorderLayout.CENTER);
win.add(jp, "South");
win.setVisible(true);
win.setSize(246, 300);
win.setDefaultCloseOperation(3);
win.validate();
}
}
【java时钟转动代码 java实现时钟】关于java时钟转动代码和java实现时钟的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读