java時鐘,JAVA時鐘

本文目錄一覽:

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

        y0 = 40 + r – 5 – T;

        ang = 60;

        //繪製時鐘上的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;

        }

        //獲得現在的時間

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

        

        //計算時間與度數的關係

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

        //擦除時針

        //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編寫時鐘呀?

import

java.util.*;

import

java.awt.*;

import

java.applet.*;

//impelements

Runnable

是線程程序的接口

public

class

Clock

extends

Applet

implements

Runnable

{

Thread

timer

=

null;

//

定義線程實體timer

int

xcenter

=

400,

ycenter

=

50;

int

Radius

=

ycenter

5;

public

void

init()

{

resize(400,

125);//

設置時鐘程序的窗口大小

setBackground(Color.white);//

設置小應用程序的背景色

}

public

void

paint(Graphics

g)

{

int

xh,

yh,

xm,

ym,

xs,

ys,

s,

m,

h;

String

today;

Date

dat

=

new

Date();

//

定義時間類dat

s

=

dat.getSeconds();

//

獲得時間秒

m

=

dat.getMinutes();

//

獲得時間分

h

=

dat.getHours();

today

=

dat.toLocaleString();

//

獲得字符串時間格式

g.clearRect(0,

0,

size().width,

size().height);

//

消除小應用程序

xcenter

=

xcenter

1;

//

向左移動一個像素點

if

(xcenter

-50)

xcenter

=

400;

//

如果xcenter小於-50,則回到初始位置

//

計算秒的坐標

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

//

計算分鐘的坐標

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

//

計算小時的坐標

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

//

設置顏色

g.drawString(“9”,

xcenter

(Radius

5),

ycenter

+

3);

//

顯示時鐘上的數字『9』

g.drawString(“3”,

xcenter

+

(Radius

10),

ycenter

+

3);

//

顯示時鐘上的數字『3』

g.drawString(“12”,

xcenter

5,

ycenter

(Radius

13));

//

顯示時鐘上的數字’12’

g.drawString(“6”,

xcenter

3,

ycenter

+

(Radius

10));

//

顯示時鐘上的數字’6′

g.drawString(today,

0,

125);

//

顯示字符串時鐘

g.drawLine(xcenter,

ycenter,

xs,

ys);

//

畫秒針

g.setColor(Color.blue);

//

設置顏色

g.drawArc(xcenter

Radius,

ycenter

Radius,

2

*

Radius,

2

*

Radius,

0,

360);

//

畫鍾

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

//

畫時針

}

public

void

start()

{

if

(timer

==

null)

{

timer

=

new

Thread(this);

//

生成Thread(多線程程序)的對象實體

timer.start();

//

啟動生成的線程

}

}

public

void

stop()

{

timer.stop();

//

停止線程的工作

timer

=

null;

//

放掉Thread對象

}

public

void

run()

//

改方法用來定義線程體,一旦線程被啟動執行,就開始執行這個方法

{

while

(timer

!=

null)

{

try

{

Thread.sleep(150);

//

使當前正在執行的線程進入睡眠時間由參數millis確定,

//

單位時間是毫秒,當這個時間過去,線程即可運行的

while

(timer

!=

null)

{

try

{

Thread.sleep(150);//

使用當前正在執行的線程進入睡眠時間由參數

//

millis確定,單位是毫秒,當這個時間過去,線程即為可運行的

}

catch

(InterruptedException

e)

{

}

repaint();

//

repaint所做的事其實是去調用方法uadate重畫效應用程序

}

timer

=

null;

}

catch

(InterruptedException

e)

{

}

}

}

//

所做的工作是先將整個效應用程序區域清除,再去調用paint,完成重畫的動作

public

void

update(Graphics

g)

{

paint(g);

}

}

怎樣用java 程序寫一個時鐘程序

面向對象思想寫成:

下面是一個顯示器類

public class Display {

private int value;//現在的值

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

}

}

}

下面創建一個時鐘對象:

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){//如果分重置,小時+1

min.increase();

if(min.getValue() == 0){//如果分重置,小時+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();

}

原創文章,作者:JODO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/133827.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JODO的頭像JODO
上一篇 2024-10-04 00:01
下一篇 2024-10-04 00:01

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論