java实现机械表

2023年2月8日09:59:14
package thread;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import java.util.Date;
import java.awt.*;


class T extends JFrame implements Runnable
{
    Thread t2 =new Thread();
    
	public void run() 
	{  
		t2.start();
		
		Frame f=new Frame("机械表");
       f.setSize(600,300);
       f.setLocation(300,300);
        f.setVisible(true); 	  
        f.add(new Paint());
        
       f.addWindowListener
        (new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
        f.dispose();
        }  } );
       
//关闭窗口       
       
    
		while(t2!=null)
		{
			f.repaint();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
class Paint extends JPanel
{
	 
	 
	 
	public void paint (Graphics g)
	{  
		int radius,ybase,xbase;

	    Date date=new Date();
	    int hour=date.getHours();
     	int minute=date.getMinutes();
	    int s=date.getSeconds(); 
		radius=ybase=xbase=150/2;	
		g.drawOval(10, 10, 150, 150);

		for (int i = 1; i <= 12; i++) {
			g.drawString(new String(i+""), (int)(10+xbase+Math.sin(Math.PI/6*i)*radius), (int)(10+ybase-Math.cos(Math.PI/6*i)*radius));
		}
		
		
		/*
		 * 圆心坐标:(x0,y0) 
半径:r 
角度:a 

圆周率: PI


则圆上任一点为:(x1,y1) 
x1   =   x0   +   r   *   cos(a   *   PI   /180   ) 
y1   =   y0   +   r   *   sin(a   *   PI  /180   ) 
		 */
	
	
		g.setColor(Color.blue);
		g.drawLine(xbase+10, ybase+10, (int)(10+xbase+(Math.cos((s*Math.PI/30)-Math.PI/2)*radius)), (int)(10+ybase+(Math.sin((s*Math.PI/30-Math.PI/2))*radius)));
		
		g.setColor(Color.green);
		g.drawLine(xbase+10, ybase+10, (int)(10+xbase+(Math.cos((minute*Math.PI/30-Math.PI/2))*radius)), (int)(10+ybase+(Math.sin((minute*Math.PI/30-Math.PI/2))*radius)));

		g.setColor(Color.red);
		g.drawLine(xbase+10, ybase+10, (int)(10+xbase+(Math.cos((hour*Math.PI/6-Math.PI/2))*radius)), (int)(10+ybase+((Math.sin(hour*Math.PI/6-Math.PI/2))*radius)));
		
		 g.setFont(new Font("宋体", Font.BOLD,20));
		 g.setColor(Color.black);
		 
	     g.drawString(date.getHours()+":"+date.getMinutes()+":"+date.getSeconds(),200,100);
	     g.drawString("北京时间",200,50);
		
	}
	     
}

public  class time
{
	public static void main(String args[])
	{
            T t1=new T();
	        t1.run();
      	}
	
}

运行图
java实现机械表

  • 作者:$Xpanda
  • 原文链接:https://blog.csdn.net/qq_44768719/article/details/111321869
    更新时间:2023年2月8日09:59:14 ,共 1811 字。