⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.java

📁 24分扑克牌游戏
💻 JAVA
字号:
/*
 * @(#)Clock.java Version 1.0 98/03/12
 * 
 * Copyright (c) 1998 by Huahai Yang
 * 
 * Use at your own risk. I do not guarantee the fitness of this 
 * software for any purpose, and I do not accept responsibility for 
 * any damage you do to yourself or others by using this software.
 * This file may be distributed freely, provided its contents 
 * are not tampered with in any way.
 *
 */

import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.AWTEvent;
import java.awt.AWTEventMulticaster;

/**
 * a clock, update once per second, fire action when time limit
 * is reached
 */
public class Clock extends Canvas implements Runnable
{
   ActionListener actionListener = null;
   String actionCommand;
   Thread clockThread = null;
   int timeLimit,
       timeUnit,
       timer;
       
	Dimension offScreenDimension;
	Image offScreenImage;
	Graphics offScreenGraphics;
   
   public Clock(int limit)
   {
      timeUnit = 1000;
      timeLimit = limit;
      timer = 0;
   } // 1 param constructor

   public Clock(int unit, int limit)
   {
      timeUnit = unit;
      timeLimit = limit;
      timer = 0;
   } // 2 param constructor
   
   public void setTimeLimit(int limit)
   {
      timeLimit = limit;
   } // setTimeLimit
   
   public int getTimeLimit()
   {
      return timeLimit;
   } // getTimeLimit   
   
   public int getTime()
   {
      return timer;
   } //getTime   

   private void createOffScreen()
   {
      // create offscreen context
      Dimension d = size();
      if ( (offScreenGraphics == null)
            || (d.width != offScreenDimension.width)
            || (d.height != offScreenDimension.height) ) 
      {
         offScreenDimension = d;
         offScreenImage = createImage(d.width, d.height);
         offScreenGraphics = offScreenImage.getGraphics();
      } // if
   } //createOffScreen
   
   public Dimension getPreferredSize()
   {
      return getMinimumSize();
   } // getPreferredSize

   public Dimension getMinimumSize()
   {
      return new Dimension(80, 50);
   } // getMinimumSize


   public void start()
   {
      if (clockThread == null)
      {
         clockThread = new Thread(this, "Clock");
      } // if
      clockThread.start();
   } // start
   
   public void stop()
   {
      clockThread = null;
      timer = 0;
      repaint();
   } //stop
   
   public void run()
   {
	   Thread myThread = Thread.currentThread();
      while (clockThread == myThread)
      {
         repaint();
         if(timeLimit == timer++)
         {
            //time limit reached, fire action
            sourceActionEvent();
         } //if
         try
         {
            Thread.sleep(timeUnit);
         } // try
         catch (InterruptedException e)
         {
         } // catch
      } //while
   } //run

   public void paint(Graphics g) 
   {
      update(g);
   } // paint
   
    public void update(Graphics g) 
    {
      createOffScreen(); 
      
      // Erase the previous image.
      offScreenGraphics.setColor(getBackground());
      offScreenGraphics.fillRect(0, 0, size().width, size().height);
      
      // draw clock
      offScreenGraphics.drawOval(0, 0, 50, 50);
      offScreenGraphics.setColor(new Color(128, 128, 192));
      offScreenGraphics.fillOval(0, 0, 50, 50);
      
      offScreenGraphics.setColor(Color.red);
      offScreenGraphics.drawLine( 25, 0, 25, 25 );
      offScreenGraphics.drawArc( 0, 0, 49, 49, 90, 
         360 * timer / timeLimit );
      offScreenGraphics.fillArc( 0, 0, 49, 49, 90, 
         360 * timer / timeLimit );
      
      //Paint the image onto the screen.
      g.drawImage(offScreenImage, 0, 0, this);
      
   } // update
   

	public void addActionListener(ActionListener l)
	{
	   actionListener = AWTEventMulticaster.add(actionListener, l);
	} // addActionListener

	public void removeActionListener(ActionListener l)
	{
	   actionListener = AWTEventMulticaster.remove(actionListener, l);
	} // removeActionListener

	public void setActionCommand(String command)
    {
    	  actionCommand = command;
    } //setActionCommand

   public void sourceActionEvent()
	{
		if (actionListener != null)
		{
		   actionListener.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, actionCommand));
		} //if
	} // sourceActionEvent

} // Clock

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -