永发信息网

java时钟设计

答案:2  悬赏:10  手机版
解决时间 2021-02-07 17:30
  • 提问者网友:凉末
  • 2021-02-07 07:15
 绘制时钟结构图
 设置Timer计时器
 设计好时针分针秒针什么时候在什么位置绘制,在什么位置擦除

(大虾帮忙一下,不要日期,星期,年 要同图片的基本一样,注意指针的颜色,数字钟的粉红背景色 程序背景色)分数可以追加
最佳答案
  • 五星知识达人网友:由着我着迷
  • 2021-02-07 08:31
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.util.Calendar;
import java.util.GregorianCalendar;

class Clock extends JFrame implements ActionListener{

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 Clock(){
super("Clock by kikiwawa");
setDefaultCloseOperation(3);
setSize(200,200);
setBackground(Color.BLACK);
setLocation(300,150);
setResizable(false);
setVisible(true);
int delay = 1000;

ActionListener drawClock = new ActionListener(){
public void actionPerformed(ActionEvent evt){
repaint();
}
};

new Timer(delay,drawClock).start();
}

public void actionPerformed(ActionEvent e){
}

public void paint(Graphics g){
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(4.0f));
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;

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.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;
if(nowh<10) st="0"+nowh;else st=""+nowh;
if(nowm<10) st+=":0"+nowm;else st+=":"+nowm;
if(nows<10) st+=":0"+nows;else st+=":"+nows;

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;

if(olds_x>0){
g.setColor(getBackground());
g.drawLine(x0,y0,olds_x,h-olds_y);
}
else{
old_m = mm;
old_h = hh;
}

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.4f));

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){
Clock c = new Clock();
} }
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-02-07 09:25
import javax.swing.*;
import java.awt.event.actionlistener;
import java.awt.event.actionevent;
import java.awt.*;
import java.util.calendar;
import java.util.gregoriancalendar;

class clock extends jframe implements actionlistener{

 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 clock(){
 super("clock by kikiwawa");
 setdefaultcloseoperation(3);
 setsize(200,200);
 setbackground(color.black);
 setlocation(300,150);
 setresizable(false);
 setvisible(true);
 int delay = 1000;

 actionlistener drawclock = new actionlistener(){
 public void actionperformed(actionevent evt){
 repaint();
 }
 };

 new timer(delay,drawclock).start();
 }

 public void actionperformed(actionevent e){
 }


 public void paint(graphics g){
 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(4.0f));
 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;

 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.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;
 if(nowh<10) st="0"+nowh;else st=""+nowh;
 if(nowm<10) st+=":0"+nowm;else st+=":"+nowm;
 if(nows<10) st+=":0"+nows;else st+=":"+nows;

 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;

 if(olds_x>0){
 g.setcolor(getbackground());
 g.drawline(x0,y0,olds_x,h-olds_y);
 }
 else{
 old_m = mm;
 old_h = hh;
 }

 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.4f));

 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){
 clock c = new clock();
} }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯