java類型模擬時(shí)鐘代碼 java類型模擬時(shí)鐘代碼大全

JAVA畫時(shí)鐘代碼

import?java.awt.*;

創(chuàng)新互聯(lián)來電聯(lián)系:18980820575,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),創(chuàng)新互聯(lián)網(wǎng)頁制作領(lǐng)域10年,包括成都假山制作等多個(gè)領(lǐng)域擁有多年的網(wǎng)站運(yùn)維經(jīng)驗(yàn),選擇創(chuàng)新互聯(lián),為企業(yè)保駕護(hù)航!

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時(shí)鐘");

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;

//創(chuàng)建一個(gè)監(jiān)聽事件

setVisible(true);

ActionListener?drawClock?=?new?ActionListener(){

public?void?actionPerformed(ActionEvent?evt){

repaint();

}

};

//創(chuàng)建一個(gè)時(shí)間計(jì)數(shù)器,每一秒觸發(fā)一次

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?=?40?+?r?-?5?+?L;

y0?=?40?+?r?-?5?-?T;

ang?=?60;

//繪制時(shí)鐘上的12個(gè)字

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;

}

//獲得現(xiàn)在的時(shí)間

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());

//在窗體上顯示時(shí)間

g.setColor(Color.pink);

g.fillRect(L,?T,?50,?28);

g.setColor(Color.blue);

g.drawString(st,L+2,T+26);

//計(jì)算時(shí)間與度數(shù)的關(guān)系

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_x??0){

//????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));

//擦除時(shí)針

//if(old_h!=hh){

//????g.setColor(getBackground());

//????g.drawLine(x0,y0,oldh_x,h-oldh_y);

//}

//繪制時(shí)針

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 寫一個(gè)clock的類,100毫秒的時(shí)鐘 求代碼。。越簡(jiǎn)單越好。。最好有注釋

這里有一個(gè)時(shí)鐘的類,你看一下吧,不明白你的 100毫秒的時(shí)鐘 是什么意思。

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],// 用來表示秒針端點(diǎn)坐標(biāo)的數(shù)組

pointSY[] = new double[60], pointMX[] = new double[60], // 用來表示分針端點(diǎn)坐標(biāo)的數(shù)組

pointMY[] = new double[60], pointHX[] = new double[60], // 用來表示時(shí)針端點(diǎn)坐標(biāo)的數(shù)組

pointHY[] = new double[60];

ClockAs() {

secondTime = new Timer(1000, this);

pointSX[0] = 0; // 12點(diǎn)秒針位置

pointSY[0] = -100;

pointMX[0] = 0; // 12點(diǎn)分針位置

pointMY[0] = -90;

pointHX[0] = 0; // 12點(diǎn)時(shí)針位置

pointHY[0] = -70;

double angle = 6 * Math.PI / 180; // 刻度為6度

for (int i = 0; i 59; i++) // 計(jì)算出各個(gè)數(shù)組中的坐標(biāo)

{

pointSX[i + 1] = pointSX[i] * Math.cos(angle) - Math.sin(angle)

* pointSY[i];

pointSY[i + 1] = pointSY[i] * Math.cos(angle) + pointSX[i]

* Math.sin(angle);

pointMX[i + 1] = pointMX[i] * Math.cos(angle) - Math.sin(angle)

* pointMY[i];

pointMY[i + 1] = pointMY[i] * Math.cos(angle) + pointMX[i]

* Math.sin(angle);

pointHX[i + 1] = pointHX[i] * Math.cos(angle) - Math.sin(angle)

* pointHY[i];

pointHY[i + 1] = pointHY[i] * Math.cos(angle) + pointHX[i]

* Math.sin(angle);

}

for (int i = 0; i 60; i++) {

pointSX[i] = pointSX[i] + 120; // 坐標(biāo)平移

pointSY[i] = pointSY[i] + 120;

pointMX[i] = pointMX[i] + 120; // 坐標(biāo)平移

pointMY[i] = pointMY[i] + 120;

pointHX[i] = pointHX[i] + 120; // 坐標(biāo)平移

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(); // 秒針開始計(jì)時(shí)

}

public void paint(Graphics g) {

for (int i = 0; i 60; 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); // 鐘表中心的實(shí)心圓

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)); // 獲取時(shí)間中的秒

int h = hour % 12;

a = second; // 秒針端點(diǎn)的坐標(biāo)

b = munite; // 分針端點(diǎn)的坐標(biāo)

c = h * 5 + munite / 12; // 時(shí)針端點(diǎn)的坐標(biāo)

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("時(shí)鐘");

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 程序?qū)懸粋€(gè)時(shí)鐘程序

面向?qū)ο笏枷雽懗桑?/p>

下面是一個(gè)顯示器類

public?class?Display?{

private?int?value;//現(xiàn)在的值

private?int?limit;//上限值

Display(?int?limit)?{

this.limit?=?limit;

}

public?void?increase()?{

value++;

if(value?==?limit)?{

value?=?0;

}

}

public?int?getValue()?{

return?value;

}

public?static?void?main(String[]?args)?{

Display?d?=?new?Display(24);

for(;;)?{

d.increase();

System.out.println(d.getValue());

}

}

}

下面創(chuàng)建一個(gè)時(shí)鐘對(duì)象:

public?class?Clock?{

private?Display?h?=?new?Display(24);

private?Display?min?=?new?Display(60);

private?Display?s?=?new?Display(60);

public?void?start?()?{

for(;;)?{

s.increase();

if(s.getValue()?==?0){//如果分重置,小時(shí)+1

min.increase();

if(min.getValue()?==?0){//如果分重置,小時(shí)+1

h.increase();

}

}

System.out.printf("%02d:%02d:%02d\n",h.getValue(),?min.getValue(),s.getValue());//格式輸出

}

}

public?static?void?main(String[]?args)?{

Clock?clock?=?new?Clock();

clock.start();

}

這段java代碼, 通過一個(gè)模擬時(shí)鐘的程序,熟悉構(gòu)造方法重載, 可是看不懂啊 麻煩高手幫忙解釋下

//這是新建了一個(gè)public類,名稱為Time

public class Time{

//其中有三個(gè)變量,表示時(shí)分秒

private int hour;

private int minute;

private int second;

//此處即為空參數(shù)的構(gòu)造函數(shù),即當(dāng)聲明這個(gè)類的對(duì)象時(shí),怎樣初始化這個(gè)對(duì)象里面的值

//每個(gè)對(duì)象都表示個(gè)時(shí)間。

//這個(gè)構(gòu)造函數(shù)調(diào)用了這個(gè)類里面的有三個(gè)參數(shù)的構(gòu)造函數(shù)。

public Time(){

this(0,0,0);

}

//此處為一個(gè)參數(shù)的構(gòu)造函數(shù)

public Time(int h){

this(h,0,0);

}

//此處為二個(gè)參數(shù)的構(gòu)造函數(shù)

public Time(int h,int m){

this(h,m,0);

}

//此處為三個(gè)參數(shù)的構(gòu)造函數(shù),即前面的構(gòu)造函數(shù)調(diào)用了這個(gè)構(gòu)造函數(shù)來初始化對(duì)象的時(shí)間值

public Time(int h,int m,int s){

setTime(h,m,s);

}

//此處是構(gòu)造函數(shù),參數(shù)為這個(gè)類的對(duì)象:

//即用一個(gè)已經(jīng)表示一個(gè)時(shí)間的Time對(duì)象來創(chuàng)建一個(gè)和它一樣的時(shí)間對(duì)象

public Time(Time time){

this(time.getHour(),time.getMinute(),time.getSecond());

}

//設(shè)置時(shí)間值

public void setTime(int h,int m,int s){

setHour(h);

setMinute(m);

setSecond(s);

}

//設(shè)置時(shí)

public void setHour(int h){

hour=((h=0h24)?h:0);

}

//設(shè)置分

public void setMinute(int m){

minute=((m=0m60)?m:0);

}

//設(shè)置秒

public void setSecong(int s){

second=((s=0s60)?s:0);

}

//獲得這個(gè)時(shí)間對(duì)象的時(shí)

public int getHour(){

return hour;

}

//獲得分

public int getMinute(){

return minute;

}

//獲得秒

public int getSecond(){

return second;

}

//格式化時(shí)間成為串

public String toUniversalString(){

return String.format("%d:%02d:%02d",getHour(),getMinute(),getSecond());

}

//格式化這個(gè)時(shí)間成為串

public String toString(){

return String.format("%d:%02d:%02d%s",((getHour()==0||getHour()==12)?12:getHour()%12),getMinute(),getSecond(),(getHour()12?"AM":"PM"));

}

}

構(gòu)造方法:通過這個(gè)程序可以看出,一個(gè)時(shí)間對(duì)象表示一個(gè)時(shí)間,有時(shí)分秒,那么創(chuàng)建對(duì)象要給它表示個(gè)時(shí)間,構(gòu)造函數(shù)就是初始化有關(guān)的操作。

比如我創(chuàng)建一個(gè)對(duì)象Time time0=new Time(8,20,20);那么time0就表示8:20:20。

構(gòu)造函數(shù)通常的格式是:public + 類名稱(參數(shù)列表){},記住,它沒有返回值。

重載:可以看到里面不只一個(gè)構(gòu)造函數(shù),這就是重載。你可能并不一定要確切的時(shí)分秒或其它,這樣就可以調(diào)用不同的構(gòu)造函數(shù)。

比如:Time time1=new Time(time0);這也創(chuàng)建了對(duì)象,此對(duì)象表示的時(shí)間和time0是一樣的。

重載的意思是一個(gè)函數(shù),參數(shù)列表的不同可以實(shí)現(xiàn)不同的功能。

java模擬時(shí)鐘

import java.awt.*;

import java.applet.Applet;

import java.util.Calendar;

import java.text.SimpleDateFormat;

import java.util.Date;

public class ClockApplet extends Applet implements Runnable //Applet支持線程

{

private Thread athread; //線程

private SimpleDateFormat sdateformat; //日期格式

public void init()

{

this.setBackground(Color.white);

this.athread = null;

}

public void paint(Graphics g)

{

this.sdateformat = new SimpleDateFormat("hh時(shí)mm分ss秒");

g.drawString(this.sdateformat.format(new Date()),25,131);

Calendar rightnow = Calendar.getInstance();

int second = rightnow.get(Calendar.SECOND);

int minute = rightnow.get(Calendar.MINUTE);

int hour = rightnow.get(Calendar.HOUR);

//半徑

int R_H = 20,R_M = 4,R_S = 4;

//時(shí)針的坐標(biāo)

//x ====(9-3)[0-6] (3-9)[6-0]

//y ====(12-6)[0-6] (6-12)[6-0]

int H_x ;

int H_y;

//x

if(hour == 0)

{

hour = 12;

}

if( hour = 3 hour = 9 )

{

H_x = R_H*Math.abs(hour - 9);

}

else

{

if(hour 9)

{

H_x = R_H*Math.abs(hour - 9);

}

else

{

H_x = R_H*Math.abs(hour+3);

}

}

//y

if( hour = 6 hour = 12 )

{

H_y = R_H*Math.abs(hour - 12);

}

else

{

H_y = R_H*hour;

}

//分針的坐標(biāo)

int M_x;

int M_y;

if(minute == 0)

{

minute = 60;

}

if( minute = 15 minute = 45 )

{

M_x = R_M*Math.abs(minute - 45);

}

else

{

if(minute 45)

{

M_x = R_M*Math.abs(minute - 45);

}

else

{

M_x = R_M*Math.abs(minute+15);

}

}

//y

if( minute = 30 minute 60 )

{

M_y = R_M*Math.abs(minute - 60);

}

else

{

M_y = R_M*minute;

}

//秒針的坐標(biāo)

int S_x;

int S_y;

if(second == 0)

{

second = 60;

}

if( second = 15 second = 45 )

{

S_x = R_S*Math.abs(second - 45);

}

else

{

if(second 45)

{

S_x = R_S*Math.abs(second - 45);

}

else

{

S_x = R_S*Math.abs(second+15);

}

}

//y

if( second = 30 second = 60 )

{

S_y = R_S*Math.abs(second - 60);

}

else

{

S_y = R_S*second;

}

// g.drawString(String.valueOf(second),25,50);

// g.drawString(String.valueOf(minute),25,60);

// g.drawString(String.valueOf(hour),25,70);

// g.drawString(String.valueOf(H_x),25,80);

// g.drawString(String.valueOf(H_y),25,90);

g.drawOval(0,0,120,120);//距離相差10像素

g.setColor(Color.darkGray);

g.drawString("9",5,65);

g.drawString("3",110,65);

g.drawString("12",55,15);

g.drawString("6",55,115);

g.drawString("1",80,20);

g.drawString("2",100,40);

g.drawString("4",100,90);

g.drawString("5",80,110);

g.drawString("7",30,110);

g.drawString("8",10,90);

g.drawString("10",10,40);

g.drawString("11",30,20);

g.setColor(Color.red);

g.drawLine(60,60,H_x,H_y);//前一個(gè)點(diǎn)表示起點(diǎn),另一個(gè)表示終點(diǎn)

g.setColor(Color.blue);

g.drawLine(60,60,M_x,M_y);

g.setColor(Color.yellow);

g.drawLine(60,60,S_x,S_y);

}

public void start()

{

if(athread == null)

{

athread = new Thread(this);

athread.start();

}

}

public void stop()

{

if(athread != null)

{

athread.interrupt();

athread = null;

}

}

public void run()

{

while(athread != null)

{

repaint();

try

{

athread.sleep(1000);

}

catch(InterruptedException e)

{

}

}

}

}

分享文章:java類型模擬時(shí)鐘代碼 java類型模擬時(shí)鐘代碼大全
地址分享:http://muchs.cn/article8/hjdiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站維護(hù)、Google、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司