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

📄 jcj.java

📁 java实现一个小时钟的
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
import java.awt.geom.*;
import java.util.*;
class Clock extends JPanel
{
  Timer secondTime;
  Line2D secondLine,muniteLine,hourLine;
  Toolkit tool;
  Image image;

  public static int s,m,h,d,m1,y,w;
  double pointSX[]=new double[60],
         pointSY[]=new double[60],
         pointMX[]=new double[60],
         pointMY[]=new double[60],
         pointHX[]=new double[60],
         pointHY[]=new double[60];
  Clock()
  {

	  pointSX[0]=0;
	  pointSY[0]=-120;
	  pointMX[0]=0;
	  pointMY[0]=-100;
	  pointHX[0]=0;
	  pointHY[0]=-80;
	  double angle=6*Math.PI/180;
	  for(int i=0;i<59;i++)
	  {
		  pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i];
		  pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle);
		  pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i];
		  pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle);
		  pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];
		  pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle);
	  }
	  for(int i=0;i<60;i++)
	  {
		 pointSX[i]=pointSX[i]+165;
		 pointSY[i]=pointSY[i]+220;
		 pointMX[i]=pointMX[i]+165;
		 pointMY[i]=pointMY[i]+220;
		 pointHX[i]=pointHX[i]+165;
		 pointHY[i]=pointHY[i]+220;

	  }
	  tool=getToolkit();
	  image=tool.getImage("9.gif");
	  secondLine=new Line2D.Double(0,0,0,0);
	  muniteLine=new Line2D.Double(0,0,0,0);
	  hourLine=new Line2D.Double(0,0,0,0);




   }
public void setvalue(int s,int h,int m,int d,int m1,int y,int w)
{
	this.s=s;
	this.h=h;
	this.m=m;
	this.d=d;
	this.m1=m1;
	this.y=y;
	this.w=w;
}

 public void paint(Graphics g)
 {
	 g.drawImage(image,0,0,600,500,this);
	 int x=1;
	for(int i=0;i<60;i++)
	{
	   int m=(int)pointSX[i];
	   int n=(int)pointSY[i];
	   g.setColor(Color.red);
	   if(i==0)
	   {
		 g.drawString("12",m-4,n+2);
		}

	   else if(i%5==0)
	   {

		   String y=String.valueOf(x);
		   g.drawString(y,m-4,n+2);
		   x++;
	   }
	   else
	   {
		  g.setColor(Color.yellow);
		  g.fillOval(m-2,n-2,4,4);

		}

	}
    g.setColor(Color.black);
    g.fillOval(160,215,10,10);
    Graphics2D g_2d=(Graphics2D)g;
    g_2d.setColor(Color.red);
    g_2d.draw(secondLine);
    BasicStroke bs=new BasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
    g_2d.setStroke(bs);
    g_2d.setColor(Color.blue);
    g_2d.draw(muniteLine);
    bs=new BasicStroke(6f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);
    g_2d.setStroke(bs);
    g_2d.setColor(Color.green);
    g_2d.draw(hourLine);
    g.setFont(new java.awt.Font("华文行楷",java.awt.Font.BOLD,20));
    g.drawString("现在的时间是:"+h+":"+m+":"+s,60,400);
    g.setFont(new java.awt.Font("华文行楷",java.awt.Font.PLAIN,16));
    g.drawString(y+"年"+m1+"月"+d+"日",120,150);
    if(w==0)
    {
	g.drawString("星期天",140,300);
    }
    else
    {
		g.drawString("星期"+w,140,300);
	}
 }

 public Image getImage()
 {
	 return image;
 }

}

class f extends JFrame implements ActionListener
{
	JLabel l1,l2,l3;
	JButton b1;
	settime dialog=new settime(this);
	int a,b,c;
	Calendar t;
	Timer secondTime;
	Clock clock=new Clock();
	int s1,m1,h1,d1,m11,y1,w1;
    boolean bool=true;
	public  f()
	{
           t=Calendar.getInstance();
		   b1=new JButton("重新设置时间");
		   Font f=new Font("华文行楷",Font.BOLD,25);
           b1.setFont(f);
           secondTime=new Timer(1000,this);
           b1.addActionListener(this);
	   add(clock,BorderLayout.CENTER);
	   add(b1,BorderLayout.SOUTH);
           setVisible(true);
	   setBounds(150,200,330,580);
	   secondTime.start();
	   validate();
	   addWindowListener(new WindowAdapter()
		 {
		   public void windowClosing(WindowEvent e)
		   {
		   System.exit(0);
		  }

		});
	}
         public void actionPerformed(ActionEvent e)
          {
                if(e.getSource()==b1)
			   {
				   dialog.setVisible(true);
				   bool=false;
			   }

		      if(e.getSource()==secondTime)
		      {
			   if(bool)
			   {
				   t.setTime(new Date());
			   }
			   else
			   {
				    t.set(dialog.a1,dialog.a2,dialog.a3,dialog.a4,dialog.a5,dialog.a6);
				          dialog.a6++;
				          if (dialog.a6==60)
				          {
				           dialog.a5++;
				           dialog.a6=0;
				          }

				          if (dialog.a5==60)
				          {
				           dialog.a4++;
				           dialog.a5=0;
				          }

				          if (dialog.a4==24)
				          {
				            dialog.a4=0;
				            dialog.a3++;
				          }

			   }
			   s1=t.get(Calendar.SECOND);
			   m1=t.get(Calendar.MINUTE);
			   h1=t.get(Calendar.HOUR_OF_DAY);
			   d1=t.get(Calendar.DAY_OF_MONTH);
			   m11=t.get(Calendar.MONTH)+1;
			   y1=t.get(Calendar.YEAR);
		           w1=t.get(Calendar.DAY_OF_WEEK)-1;
		           clock.setvalue(s1,h1,m1,d1,m11,y1,w1);
		  	   int i=h1%12;
		  	   int a=s1,b=m1,c=i*5+m1/12;
		  	   clock.secondLine.setLine(165,220,(int)clock.pointSX[a],(int)clock.pointSY[a]);
		  	   clock.muniteLine.setLine(165,220,(int)clock.pointMX[b],(int)clock.pointMY[b]);
		  	   clock.hourLine.setLine(165,220,(int)clock.pointHX[c],(int)clock.pointHY[c]);
		  	   clock.repaint();
		      }

 }
}

class settime extends JDialog implements ActionListener
{
    JButton  button1,button2;
    Box baseBox,baseBox1,boxV1,boxV2,boxV3,boxV4;
    TextField text1,text2,text3,text4,text5,text6;
    JLabel l1,l2,l3,l4,l5,l6,l7,l8;
    int a1,a2,a3,a4,a5,a6;
    public settime(JFrame f)
   {
	super(f,"设置时间对话框",false);
    l1=new JLabel("请输入日期:");
	l2=new JLabel("年");
    l3=new JLabel("月");
	l4=new JLabel("日");
	l5=new JLabel("请输入时间:");
	l6=new JLabel("时");
	l7=new JLabel("分");
	l8=new JLabel("秒");
	Font f1=new Font("华文行楷",Font.ITALIC,20);
	l1.setFont(f1);l5.setFont(f1);
	l2.setFont(f1);l6.setFont(f1);
	l3.setFont(f1);l7.setFont(f1);
	l4.setFont(f1);l8.setFont(f1);
	text1=new TextField(10);text2=new TextField(10);text3=new TextField(10);
    text4=new TextField(10);text5=new TextField(10);text6=new TextField(10);
    add(l1);
	boxV1=Box.createVerticalBox();
	boxV1.add(l2);
	boxV1.add(Box.createVerticalStrut(20));
	boxV1.add(l3);
	boxV1.add(Box.createVerticalStrut(20));
	boxV1.add(l4);
	boxV2=Box.createVerticalBox();
	boxV2.add(text1);
	boxV2.add(Box.createVerticalStrut(20));
    boxV2.add(text2);
	boxV2.add(Box.createVerticalStrut(20));
    boxV2.add(text3);
	baseBox=Box.createHorizontalBox();
    baseBox.add(boxV1);
	baseBox.add(Box.createHorizontalStrut(30));
	baseBox.add(boxV2);
	add(baseBox);
	add(l5);
    boxV3=Box.createVerticalBox();
	boxV3.add(l6);
	boxV3.add(Box.createVerticalStrut(20));
	boxV3.add(l7);
	boxV3.add(Box.createVerticalStrut(20));
	boxV3.add(l8);
	boxV4=Box.createVerticalBox();
	boxV4.add(text4);
	boxV4.add(Box.createVerticalStrut(20));
	boxV4.add(text5);
	boxV4.add(Box.createVerticalStrut(20));
	boxV4.add(text6);
	baseBox1=Box.createHorizontalBox();
	baseBox1.add(boxV3);
	baseBox1.add(Box.createHorizontalStrut(30));
    baseBox1.add(boxV4);
	add(baseBox1);
    button1=new JButton("确定");
	button2=new JButton("退出");
    Font f2=new Font("华文行楷",Font.BOLD,20);
	button1.setFont(f2);
	button2.setFont(f2);
	button2.setForeground(Color.red);
	add(button1);
	add(button2);
	button1.addActionListener(this);
    button2.addActionListener(this);
	setLayout(new FlowLayout());
	setBounds(120,125,650,200);
	addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e)
					{setVisible(false);}

		});
    }

   public void actionPerformed(ActionEvent e)
    {
    if(e.getSource()==button1)
        {
              a1=Integer.parseInt(text1.getText());
              a2=Integer.parseInt(text2.getText())-1;
              a3=Integer.parseInt(text3.getText());
              a4=Integer.parseInt(text4.getText());
              a5=Integer.parseInt(text5.getText());
              a6=Integer.parseInt(text6.getText());
          JOptionPane.showMessageDialog(this,"时间设置成功","消息对话框",JOptionPane.PLAIN_MESSAGE);
        }

        else if(e.getSource()==button2)
       {
  	    setVisible(false);
       }
    }
  }

 public class jcj
 {
	 public static void main(String argsp[])
	 {
		new f();


	 }

 }


⌨️ 快捷键说明

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