绘制时钟结构图
设置Timer计时器
设计好时针分针秒针什么时候在什么位置绘制,在什么位置擦除
(大虾帮忙一下,不要日期,星期,年 要同图片的基本一样,注意指针的颜色,数字钟的粉红背景色 程序背景色)分数可以追加
java时钟设计
答案:2 悬赏:10 手机版
解决时间 2021-02-07 17:30
- 提问者网友:凉末
- 2021-02-07 07:15
最佳答案
- 五星知识达人网友:由着我着迷
- 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();
} }
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(); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯