import?java.awt.*;
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供遷安企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站建設(shè)、做網(wǎng)站、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為遷安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
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)聽(tīng)事件
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);
//畫(huà)圓
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();
}
}
//整理一下
import
java.util.*;
import
java.awt.*;
import
java.applet.*;
//impelements
Runnable
是線(xiàn)程程序的接口
public
class
Clock
extends
Applet
implements
Runnable
{
Thread
timer
=
null;
//
定義線(xiàn)程實(shí)體timer
int
xcenter
=
400,
ycenter
=
50;
int
Radius
=
ycenter
-
5;
public
void
init()
{
resize(400,
125);//
設(shè)置時(shí)鐘程序的窗口大小
setBackground(Color.white);//
設(shè)置小應(yīng)用程序的背景色
}
public
void
paint(Graphics
g)
{
int
xh,
yh,
xm,
ym,
xs,
ys,
s,
m,
h;
String
today;
Date
dat
=
new
Date();
//
定義時(shí)間類(lèi)dat
s
=
dat.getSeconds();
//
獲得時(shí)間秒
m
=
dat.getMinutes();
//
獲得時(shí)間分
h
=
dat.getHours();
today
=
dat.toLocaleString();
//
獲得字符串時(shí)間格式
g.clearRect(0,
0,
size().width,
size().height);
//
消除小應(yīng)用程序
xcenter
=
xcenter
-
1;
//
向左移動(dòng)一個(gè)像素點(diǎn)
if
(xcenter
-50)
xcenter
=
400;
//
如果xcenter小于-50,則回到初始位置
//
計(jì)算秒的坐標(biāo)
xs
=
(int)
(Math.cos(s
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
5)
+
xcenter);
ys
=
(int)
(Math.sin(s
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
5)
+
ycenter);
//
計(jì)算分鐘的坐標(biāo)
xm
=
(int)
(Math.cos(m
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
10)
+
xcenter);
ym
=
(int)
(Math.sin(m
*
3.14f
/
30
-
3.14f
/
2)
*
(Radius
-
10)
+
ycenter);
//
計(jì)算小時(shí)的坐標(biāo)
xh
=
(int)
(Math.cos((h
*
30
+
m
/
2)
*
3.14f
/
180
-
3.14f
/
2)
*
(Radius
-
20)
+
xcenter);
yh
=
(int)
(Math.sin((h
*
30
+
m
/
2)
*
3.14f
/
180
-
3.14f
/
2)
*
(Radius
-
20)
+
ycenter);
g.setColor(Color.darkGray);
//
設(shè)置顏色
g.drawString("9",
xcenter
-
(Radius
-
5),
ycenter
+
3);
//
顯示時(shí)鐘上的數(shù)字‘9’
g.drawString("3",
xcenter
+
(Radius
-
10),
ycenter
+
3);
//
顯示時(shí)鐘上的數(shù)字‘3’
g.drawString("12",
xcenter
-
5,
ycenter
-
(Radius
-
13));
//
顯示時(shí)鐘上的數(shù)字'12'
g.drawString("6",
xcenter
-
3,
ycenter
+
(Radius
-
10));
//
顯示時(shí)鐘上的數(shù)字'6'
g.drawString(today,
0,
125);
//
顯示字符串時(shí)鐘
g.drawLine(xcenter,
ycenter,
xs,
ys);
//
畫(huà)秒針
g.setColor(Color.blue);
//
設(shè)置顏色
g.drawArc(xcenter
-
Radius,
ycenter
-
Radius,
2
*
Radius,
2
*
Radius,
0,
360);
//
畫(huà)鐘
g.drawLine(xcenter,
ycenter
-
1,
xm,
ym);
//
畫(huà)分針
g.drawLine(xcenter
-
1,
ycenter,
xm,
ym);
//
畫(huà)分針
g.drawLine(xcenter,
ycenter
-
1,
xh,
yh);
//
畫(huà)時(shí)針
g.drawLine(xcenter
-
1,
ycenter,
xh,
yh);
//
畫(huà)時(shí)針
}
public
void
start()
{
if
(timer
==
null)
{
timer
=
new
Thread(this);
//
生成Thread(多線(xiàn)程程序)的對(duì)象實(shí)體
timer.start();
//
啟動(dòng)生成的線(xiàn)程
}
}
public
void
stop()
{
timer.stop();
//
停止線(xiàn)程的工作
timer
=
null;
//
放掉Thread對(duì)象
}
public
void
run()
//
改方法用來(lái)定義線(xiàn)程體,一旦線(xiàn)程被啟動(dòng)執(zhí)行,就開(kāi)始執(zhí)行這個(gè)方法
{
while
(timer
!=
null)
{
try
{
Thread.sleep(150);
//
使當(dāng)前正在執(zhí)行的線(xiàn)程進(jìn)入睡眠時(shí)間由參數(shù)millis確定,
//
單位時(shí)間是毫秒,當(dāng)這個(gè)時(shí)間過(guò)去,線(xiàn)程即可運(yùn)行的
while
(timer
!=
null)
{
try
{
Thread.sleep(150);//
使用當(dāng)前正在執(zhí)行的線(xiàn)程進(jìn)入睡眠時(shí)間由參數(shù)
//
millis確定,單位是毫秒,當(dāng)這個(gè)時(shí)間過(guò)去,線(xiàn)程即為可運(yùn)行的
}
catch
(InterruptedException
e)
{
}
repaint();
//
repaint所做的事其實(shí)是去調(diào)用方法uadate重畫(huà)效應(yīng)用程序
}
timer
=
null;
}
catch
(InterruptedException
e)
{
}
}
}
//
所做的工作是先將整個(gè)效應(yīng)用程序區(qū)域清除,再去調(diào)用paint,完成重畫(huà)的動(dòng)作
public
void
update(Graphics
g)
{
paint(g);
}
}
public?class?A?{
public?static?void?main(String[]?args)?{
Clock?clock?=?new?Clock(13,?20,?38);
System.out.print(clock);
}
}
class?Clock?{
private?int?hour;
private?int?minute;
private?int?second;
public?Clock(int?hour,?int?minute,?int?second)?{
super();
this.hour?=?hour;
this.minute?=?minute;
this.second?=?second;
}
public?int?getHour()?{
return?hour;
}
public?void?setHour(int?hour)?{
this.hour?=?hour;
}
public?int?getMinute()?{
return?minute;
}
public?void?setMinute(int?minute)?{
this.minute?=?minute;
}
public?int?getSecond()?{
return?second;
}
public?void?setSecond(int?second)?{
this.second?=?second;
}
@Override
public?String?toString()?{
return?"現(xiàn)在時(shí)間是:"?+?hour?+?"時(shí)"?+?minute?+?"分"?+?second?+?"秒.";
}
}
面向?qū)ο笏枷雽?xiě)成:
下面是一個(gè)顯示器類(lèi)
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();
}
我給你做了一下:(第二個(gè)功能你自己加吧)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.text.*;
public class TestTimer extends JFrame implements ActionListener{
Timer timer;
JLabel display = new JLabel();
SimpleDateFormat dateFmt = new SimpleDateFormat("hh:mm:ss");
TestTimer(){
getContentPane().setLayout(new FlowLayout());
timer = new Timer(1000,this);
timer.setRepeats(true);
timer.setInitialDelay(1000);
timer.start();
getContentPane().add(display);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,100);
setVisible(true);
} // TestTimer
public void actionPerformed(ActionEvent e){
if(e.getSource() == timer){
display.setText(dateFmt.format(new Date()));
}
} // actionPerformed
public static void main(String[] args){
TestTimer tt = new TestTimer();
}
} // TestTimer
class Clock{
private int hourse;
private int minute;
private int second;
public Clock(){
this.hourse=0;
this.minute=0;
this.second=0;
}
public void incSecond(){
this.second+=1;
}
public void toTime(){
if(this.hourse24){this.hourse=0;}
if(this.minute60){this.hourse+=1;this.minute-=60;}
if(this.second60){this.minute+=1;this.second-=60;}
System.out.printf(hourse+":"+minute+":"+second);
}
public void setHourse(int hourse) {
this.hourse = hourse;
}
public void setMinute(int minute) {
this.minute = minute;
}
public void setSecond(int second) {
this.second = second;
}
}
public class test {
public static void main(String[] args) {
Clock c=new Clock();
c.setMinute(66);//測(cè)試數(shù)據(jù)
c.setSecond(61);
c.toTime();//輸出1:7:1
}
}
基本功能實(shí)現(xiàn)。
當(dāng)前文章:用java寫(xiě)的時(shí)鐘代碼 用java編寫(xiě)時(shí)鐘
標(biāo)題網(wǎng)址:http://jinyejixie.com/article40/dochjeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、Google、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)