Clock.java~5~
上传用户:liming9091
上传日期:2014-10-27
资源大小:3376k
文件大小:4k
源码类别:

Java编程

开发平台:

Java

  1. package manpowersystem;
  2. import java.util.*;
  3. import java.awt.*;
  4. import javax.swing.*;
  5. public class Clock extends JPanel implements Runnable {
  6.     boolean keepRunning = true;
  7.     int lastxs = 0, lastys = 0, lastxm = 0, lastym = 0, lastxh = 0, lastyh = 0;
  8.     Date dummy = new Date();
  9.     String lastdate = dummy.toLocaleString();
  10.     String myName;
  11.     public Clock( String inName ) {
  12.         myName = new String( inName );
  13.     }
  14.     public void plotpoints( int x0, int y0, int x, int y, Graphics g ) {
  15.         g.drawLine( x0 + x, y0 + y, x0 + x, y0 + y );
  16.         g.drawLine( x0 + y, y0 + x, x0 + y, y0 + x );
  17.         g.drawLine( x0 + y, y0 - x, x0 + y, y0 - x );
  18.         g.drawLine( x0 + x, y0 - y, x0 + x, y0 - y );
  19.         g.drawLine( x0 - x, y0 - y, x0 - x, y0 - y );
  20.         g.drawLine( x0 - y, y0 - x, x0 - y, y0 - x );
  21.         g.drawLine( x0 - y, y0 + x, x0 - y, y0 + x );
  22.         g.drawLine( x0 - x, y0 + y, x0 - x, y0 + y );
  23.     }
  24.     public void circle( int x0, int y0, int r, Graphics g ) {
  25.         int x, y;
  26.         float d;
  27.         x = 0;
  28.         y = r;
  29.         d = 5 / 4 - r;
  30.         plotpoints( x0, y0, x, y, g );
  31.         while ( y > x ) {
  32.             if ( d < 0 ) {
  33.                 d = d + 2 * x + 3;
  34.                 x++;
  35.             }
  36.             else {
  37.                 d = d + 2 * ( x - y ) + 5;
  38.                 x++;
  39.                 y--;
  40.             }
  41.             plotpoints( x0, y0, x, y, g );
  42.         }
  43.     }
  44.     // Paint is the main part of the program
  45.     public void paintComponent( Graphics g ) {
  46.         super.paintComponent( g );
  47.         int xh, yh, xm, ym, xs, ys, s, m, h, xcenter, ycenter;
  48.         String today;
  49.         Date dat = new Date();
  50.         s = dat.getSeconds();
  51.         m = dat.getMinutes();
  52.         h = dat.getHours();
  53.         today = dat.toLocaleString();
  54.         xcenter = getWidth() / 2;
  55.         ycenter = getHeight() / 2 - 10;
  56.         // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)
  57.         // x = r(cos a) + xcenter, y = r(sin a) + ycenter
  58.         xs = ( int ) ( Math.cos( s * 3.14f / 30 - 3.14f / 2 ) * 35 + xcenter );
  59.         ys = ( int ) ( Math.sin( s * 3.14f / 30 - 3.14f / 2 ) * 35 + ycenter );
  60.         xm = ( int ) ( Math.cos( m * 3.14f / 30 - 3.14f / 2 ) * 30 + xcenter );
  61.         ym = ( int ) ( Math.sin( m * 3.14f / 30 - 3.14f / 2 ) * 30 + ycenter );
  62.         xh = ( int ) ( Math.cos( ( h * 30 + m / 2 ) * 3.14f / 180 - 3.14f / 2 ) *
  63.                        20 + xcenter );
  64.         yh = ( int ) ( Math.sin( ( h * 30 + m / 2 ) * 3.14f / 180 - 3.14f / 2 ) *
  65.                        20 + ycenter );
  66.         // Draw the circle and numbers
  67.         g.setFont( new Font( "TimesRoman", Font.PLAIN, 14 ) );
  68.         g.setColor( Color.green );
  69.         circle( xcenter, ycenter, 40, g );
  70.         g.setColor( new Color( 0, 0, 200 ) );
  71.         g.drawString( "9", xcenter - 35, ycenter + 3 );
  72.         g.drawString( "3", xcenter + 30, ycenter + 3 );
  73.         g.drawString( "12", xcenter - 5, ycenter - 27 );
  74.         g.drawString( "6", xcenter - 3, ycenter + 35 );
  75.         // Erase if necessary, and redraw
  76.         g.setColor( Color.red );
  77.         if ( xs != lastxs || ys != lastys ) {
  78.             g.drawLine( xcenter, ycenter, lastxs, lastys );
  79.             g.drawString( lastdate, xcenter - 55, ycenter + 55 );
  80.         }
  81.         if ( xm != lastxm || ym != lastym ) {
  82.             g.drawLine( xcenter, ycenter - 1, lastxm, lastym );
  83.             g.drawLine( xcenter - 1, ycenter, lastxm, lastym );
  84.         }
  85.         if ( xh != lastxh || yh != lastyh ) {
  86.             g.drawLine( xcenter, ycenter - 1, lastxh, lastyh );
  87.             g.drawLine( xcenter - 1, ycenter, lastxh, lastyh );
  88.         }
  89.         g.setColor( Color.red );
  90.         g.drawString( today, xcenter - 55, ycenter + 55 );
  91.         g.drawLine( xcenter, ycenter, xs, ys );
  92.         g.setColor( Color.black );
  93.         g.drawLine( xcenter, ycenter - 1, xm, ym );
  94.         g.drawLine( xcenter - 1, ycenter, xm, ym );
  95.         g.drawLine( xcenter, ycenter - 1, xh, yh );
  96.         g.drawLine( xcenter - 1, ycenter, xh, yh );
  97.         lastxs = xs;
  98.         lastys = ys;
  99.         lastxm = xm;
  100.         lastym = ym;
  101.         lastxh = xh;
  102.         lastyh = yh;
  103.         lastdate = today;
  104.     }
  105.     public void stop() {
  106.         keepRunning = false;
  107.     }
  108.     public void run() {
  109.         while ( keepRunning ) {
  110.             try {
  111.                 Thread.sleep( 100 );
  112.             }
  113.             catch ( InterruptedException e ) {}
  114.             repaint();
  115.         }
  116.     }
  117. }