问题描述
importjavax.swing.*;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;importjava.awt.*;importjava.util.Calendar;importjava.util.GregorianCalendar;classClockextendsJFrameimplementsActionListener{intx,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;finaldoubleRAD=Math.PI/180;publicClock(){super("Clock");setDefaultCloseOperation(3);setSize(250,250);setBackground(Color.WHITE);setLocation(300,150);setResizable(false);setVisible(true);intdelay=1000;ActionListenerdrawClock=newActionListener(){publicvoidactionPerformed(ActionEventevt){repaint();}};newTimer(delay,drawClock).start();}publicvoidactionPerformed(ActionEvente){}publicvoidpaint(Graphicsg){Graphics2Dg2D=(Graphics2D)g;Insetsinsets=getInsets();intL=insets.left/2,T=insets.top/2;h=getSize().height;g.setColor(Color.black);g2D.setStroke(newBasicStroke(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(inti=1;i<=12;i++){x=(int)((r-8)*Math.cos(RAD*ang)+x0);y=(int)((r-8)*Math.sin(RAD*ang)+y0);g.drawString(""+i,x,h-y);ang-=30;}Calendarnow=newGregorianCalendar();intnowh=now.get(Calendar.HOUR_OF_DAY);intnowm=now.get(Calendar.MINUTE);intnows=now.get(Calendar.SECOND);Stringst;if(nowh<10)st="0"+nowh;elsest=""+nowh;if(nowm<10)st+=":0"+nowm;elsest+=":"+nowm;if(nows<10)st+=":0"+nows;elsest+=":"+nows;g.setColor(Color.white);g.fillRect(L,T,50,28);g.setColor(Color.black);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.black);g.drawLine(x0,y0,x,h-y);olds_x=x;olds_y=y;g2D.setStroke(newBasicStroke(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.red);g.drawLine(x0,y0,x,h-y);oldm_x=x;oldm_y=y;old_m=mm;g2D.setStroke(newBasicStroke(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;}publicstaticvoidmain(String[]args){Clockc=newClock();}}
解决方案
解决方案二:
要加的话插个布局异常好叻
解决方案三:
引用1楼goodsun00的回复:
要加的话插个布局异常好叻
怎么加嘞?给我改改呗?
解决方案四:
调用Graphics2D的setRenderingHint/setRenderingHints设置ANTIALIAS
解决方案五:
引用3楼huntor的回复:
调用Graphics2D的setRenderingHint/setRenderingHints设置ANTIALIAS
额。。不会额,帮我改改呗
解决方案六:
在Graphics2Dg2D=(Graphics2D)g;
后面添加g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);g2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
解决方案七:
引用5楼huntor的回复:
在JavacodeGraphics2Dg2D=(Graphics2D)g;后面添加Javacodeg2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);g2D.setRenderingHint(RenderingHints.KEY……
加了之后,指针轨迹不能擦出了,怎么处理啊?
解决方案八:
写代码要注意加上注释