Clock.java~7~
上传用户: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.     public void paintComponent( Graphics g ) {
  45.         super.paintComponent( g );
  46.         int xh, yh, xm, ym, xs, ys, s, m, h, xcenter, ycenter;
  47.         String today;
  48.         Date dat = new Date();
  49.         s = dat.getSeconds();
  50.         m = dat.getMinutes();
  51.         h = dat.getHours();
  52.         today = dat.toLocaleString();
  53.         xcenter = getWidth() / 2;
  54.         ycenter = getHeight() / 2 - 10;
  55.         xs = ( int ) ( Math.cos( s * 3.14f / 30 - 3.14f / 2 ) * 35 + xcenter );
  56.         ys = ( int ) ( Math.sin( s * 3.14f / 30 - 3.14f / 2 ) * 35 + ycenter );
  57.         xm = ( int ) ( Math.cos( m * 3.14f / 30 - 3.14f / 2 ) * 30 + xcenter );
  58.         ym = ( int ) ( Math.sin( m * 3.14f / 30 - 3.14f / 2 ) * 30 + ycenter );
  59.         xh = ( int ) ( Math.cos( ( h * 30 + m / 2 ) * 3.14f / 180 - 3.14f / 2 ) *
  60.                        20 + xcenter );
  61.         yh = ( int ) ( Math.sin( ( h * 30 + m / 2 ) * 3.14f / 180 - 3.14f / 2 ) *
  62.                        20 + ycenter );
  63.         g.setFont( new Font( "TimesRoman", Font.PLAIN, 14 ) );
  64.         g.setColor( Color.green );
  65.         circle( xcenter, ycenter, 40, g );
  66.         g.setColor( new Color( 0, 0, 200 ) );
  67.         g.drawString( "9", xcenter - 35, ycenter + 3 );
  68.         g.drawString( "3", xcenter + 30, ycenter + 3 );
  69.         g.drawString( "12", xcenter - 5, ycenter - 27 );
  70.         g.drawString( "6", xcenter - 3, ycenter + 35 );
  71.         // Erase if necessary, and redraw
  72.         g.setColor( Color.red );
  73.         if ( xs != lastxs || ys != lastys ) {
  74.             g.drawLine( xcenter, ycenter, lastxs, lastys );
  75.             g.drawString( lastdate, xcenter - 55, ycenter + 55 );
  76.         }
  77.         if ( xm != lastxm || ym != lastym ) {
  78.             g.drawLine( xcenter, ycenter - 1, lastxm, lastym );
  79.             g.drawLine( xcenter - 1, ycenter, lastxm, lastym );
  80.         }
  81.         if ( xh != lastxh || yh != lastyh ) {
  82.             g.drawLine( xcenter, ycenter - 1, lastxh, lastyh );
  83.             g.drawLine( xcenter - 1, ycenter, lastxh, lastyh );
  84.         }
  85.         g.setColor( Color.red );
  86.         g.drawString( today, xcenter - 55, ycenter + 55 );
  87.         g.drawLine( xcenter, ycenter, xs, ys );
  88.         g.setColor( Color.black );
  89.         g.drawLine( xcenter, ycenter - 1, xm, ym );
  90.         g.drawLine( xcenter - 1, ycenter, xm, ym );
  91.         g.drawLine( xcenter, ycenter - 1, xh, yh );
  92.         g.drawLine( xcenter - 1, ycenter, xh, yh );
  93.         lastxs = xs;
  94.         lastys = ys;
  95.         lastxm = xm;
  96.         lastym = ym;
  97.         lastxh = xh;
  98.         lastyh = yh;
  99.         lastdate = today;
  100.     }
  101.     public void stop() {
  102.         keepRunning = false;
  103.     }
  104.     public void run() {
  105.         while ( keepRunning ) {
  106.             try {
  107.                 Thread.sleep( 100 );
  108.             }
  109.             catch ( InterruptedException e ) {}
  110.             repaint();
  111.         }
  112.     }
  113. }