本文目錄一覽:
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-hant/n/133827.html