import java.awt.*; import java.util.Calendar; import java.util.Date; import java.applet.Applet; import userClass.*; public class Time extends Applet implements Runnable { Graphics off_g; Graphics clock_g; Image off; Image clock; Thread th; Date date; Calendar ca; String s; String hour; String minu; String sec; String day; Font font1,font2; double ra1,ra2,ra3; double wave_ra; int w, h; /*********init********/ public void init(){ w = getSize().width; h = getSize().height; off = createImage(w,h); off_g = off.getGraphics(); clock = createImage(w,h); clock_g = clock.getGraphics(); userFrame frame = new userFrame("MENU"); frame.show(); th = null; font1 = new Font("Dialog",Font.PLAIN,20); font2 = new Font("Dialog",Font.PLAIN,10); wave_ra = ra1 = ra2 = ra3 = 0; } /*********start*******/ public void start(){ if (th == null){ th = new Thread(this); th.start(); } } /*********run********/ public void run() { while (th != null){ repaint(); try{ th.sleep(200); } catch (InterruptedException e){} } } /********paint*******/ public void paint(Graphics g){ off_g.setColor(Color.black); off_g.fillRect(0,0,400,101); off_g.setColor(Color.white); off_g.setFont(font1); ca = Calendar.getInstance(); ra1 = (Math.PI/30)*ca.get(ca.SECOND) - Math.PI/2; ra2 = (Math.PI/30)*ca.get(ca.MINUTE) - Math.PI/2; ra3 = (Math.PI/6)*ca.get(ca.HOUR) - Math.PI/2 + ((Math.PI*2)/(12*60))*ca.get(ca.MINUTE); draw_clock(ra1,ra2,ra3);//アナログ時計を描く /* s = change_toString();//時間、分、秒を文字列にする day = getDay(ca.get(ca.DAY_OF_WEEK));//曜日を文字列にする off_g.setColor(Color.white); off_g.drawString(ca.get(ca.YEAR) + "年 " + (ca.get(ca.MONTH) + 1) + "月" + ca.get(ca.DATE) + "日",10,25); off_g.drawString(" " + day + "曜日",100,50); off_g.drawString(s,10,50); */ //off_g.setColor(Color.cyan); //off_g.setFont(font2); //off_g.drawString("Create by T.Funayama", 0,130); g.drawImage(off,0,0,this); } /********draw_clock******/ void draw_clock(double ra1, double ra2, double ra3){ int clock_x[] = new int[3]; int clock_y[] = new int[3]; clock_x[0] = clock_x[1] = clock_x[2] = 0; clock_y[0] = clock_y[1] = clock_y[2] = 0; int w = 3; clock_g.setColor(Color.black); clock_g.fillRect(0,0,clock.getWidth(null),clock.getHeight(null)); clock_g.setColor(Color.white); clock_g.drawOval(0,10,100,100);//時計の枠 clock_x[0] = 50+(int)(20*Math.cos(ra3)); clock_y[0] = 60+(int)(20*Math.sin(ra3)); clock_x[1] = 50+(int)(w*Math.cos(ra3-(Math.PI/2))); clock_y[1] = 60+(int)(w*Math.sin(ra3-(Math.PI/2))); clock_x[2] = 50+(int)(w*Math.cos(ra3+(Math.PI/2))); clock_y[2] = 60+(int)(w*Math.sin(ra3+(Math.PI/2))); clock_g.fillPolygon(clock_x,clock_y,3); clock_g.setColor(Color.green); for (int i = 0; i <= 11; i++){//時間の点 clock_g.fillOval( (int)(45*Math.sin((Math.PI/6)*i))+50-3, (int)(45*Math.cos((Math.PI/6)*i))+60-3,6,6); } clock_g.setColor(Color.yellow); clock_x[0] = 50+(int)(40*Math.cos(ra2)); clock_y[0] = 60+(int)(40*Math.sin(ra2)); clock_x[1] = 50+(int)(w*Math.cos(ra2-(Math.PI/2))); clock_y[1] = 60+(int)(w*Math.sin(ra2-(Math.PI/2))); clock_x[2] = 50+(int)(w*Math.cos(ra2+(Math.PI/2))); clock_y[2] = 60+(int)(w*Math.sin(ra2+(Math.PI/2))); clock_g.fillPolygon(clock_x,clock_y,3); clock_g.setColor(Color.cyan); clock_x[0] = 50+(int)(45*Math.cos(ra1)); clock_y[0] = 60+(int)(45*Math.sin(ra1)); clock_x[1] = 50+(int)(w*Math.cos(ra1-(Math.PI/2))); clock_y[1] = 60+(int)(w*Math.sin(ra1-(Math.PI/2))); clock_x[2] = 50+(int)(w*Math.cos(ra1+(Math.PI/2))); clock_y[2] = 60+(int)(w*Math.sin(ra1+(Math.PI/2))); clock_g.drawPolygon(clock_x,clock_y,3); clock_x[0] = 50+(int)(13*-Math.cos(ra1)); clock_y[0] = 60+(int)(13*-Math.sin(ra1)); clock_g.drawPolygon(clock_x,clock_y,3); clock_g.drawString(""+Math.sqrt(Math.pow(clock_x[1]-50,2)+Math.pow(clock_y[1]-60,2)),0,30); //createWaveClock(); off_g.drawImage(clock,0,0,this); } /************drawWaveClock*************/ public void createWaveClock(){ double ra; int w = clock.getWidth(null); int h = clock.getHeight(null); double PI2 = Math.PI*2; for (int i = 0; i < w; i++){ ra = Math.sin(wave_ra + ((PI2/100)*i)); clock_g.copyArea(i,0,1,h,0,(int)(3*ra)); } if (wave_ra >= (PI2/6)*5) wave_ra = 0; else wave_ra += PI2/6; } /*********getDay***********/ String getDay(int day_num){ String day; switch (day_num){ case 1: day = "日"; break; case 2: day = "月"; break; case 3: day = "火"; break; case 4: day = "水"; break; case 5: day = "木"; break; case 6: day = "金"; break; default: day = "土"; } return day; } /*********change_toStirng********/ String change_toString(){ if (ca.get(ca.HOUR_OF_DAY) < 10) hour = "0" + ca.get(ca.HOUR_OF_DAY); else hour = Integer.toString(ca.get(ca.HOUR_OF_DAY)); if (ca.get(ca.MINUTE) < 10) minu = "0" + ca.get(ca.MINUTE); else minu = Integer.toString(ca.get(ca.MINUTE)); if (ca.get(ca.SECOND) < 10) sec = "0" + ca.get(ca.SECOND); else sec = Integer.toString(ca.get(ca.SECOND)); return hour + ":" + minu + ":" + sec; } /*******update********/ public void update(Graphics g){ paint(g); } /*******stop********/ public void stop(){ if (th != null) th = null; } }