Java小应用程序指针时钟
来源:互联网 发布:西甲数据库 编辑:程序博客网 时间:2024/05/18 02:11
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author fyx
*/
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import static java.lang.Math.*;
public class Clockfyx extends JApplet{
private ClockPaint panel;
private Thread t;
@Override
public void init()
{
Calendar d=Calendar.getInstance(); //获得本地系统时间
panel=new ClockPaint(d.get(Calendar.MONTH),d.get(Calendar.DATE),d.get(Calendar.DAY_OF_WEEK),d.get(Calendar.HOUR)*5+d.get(Calendar.MINUTE)/12,d.get(Calendar.MINUTE),d.get(Calendar.SECOND));
panel.setBackground(Color.black);
add(panel);
Runnable r=new ClockRunnable(panel);
t=new Thread(r);
t.start();
}
}
class ClockRunnable extends Thread//创建第二个线程
{
private ClockPaint component;
public ClockRunnable(ClockPaint aComponent)
{
component=aComponent;
}
@Override
public void run()
{
try
{
Calendar d=Calendar.getInstance(); //获得本地系统时间
component.reset(d.get(Calendar.HOUR)*5+d.get(Calendar.MINUTE)/12,d.get(Calendar.MINUTE),d.get(Calendar.SECOND));
for(;;)
{
component.repaint();
Toolkit.getDefaultToolkit().beep();
Thread.sleep(1000);
}
}
catch(InterruptedException e){}
}
}
class ClockPaint extends JPanel
{
private ArrayList<Line2D> Slines,Mlines,Hlines;//数组列表
private double X,Y;
private int r,x,y;
private double SR,MR,HR;
private int Mtag,Htag,Stag;
private String Month1,Date1,Week1;
public ClockPaint(int month,int date,int week,int hour,int minute,int second)
{
Stag=second;Mtag=minute;Htag=hour;
if(month<9)
{
Month1="0"+(month+1);
}
else
{
Month1=""+(month+1);
}
if(date<10)
{
Date1="0"+date;
}
else
{
Date1=""+date;
}
switch(week)
{
case 1:
Week1="日";
break;
case 2:
Week1="一";
break;
case 3:
Week1="二";
break;
case 4:
Week1="三";
break;
case 5:
Week1="四";
break;
case 6:
Week1="五";
break;
case 7:
Week1="六";
break;
}
X=300;Y=300;x=300;y=300;
HR=160;SR=220;MR=180;
r=250;
Slines=new ArrayList<Line2D>();
Mlines=new ArrayList<Line2D>();
Hlines=new ArrayList<Line2D>();
for(int i=0;i<60;++i)
{
Slines.add(new Line2D.Double(300,300,X+sin(PI*i/30)*SR,Y-cos(PI*i/30)*SR));
Mlines.add(new Line2D.Double(300,300,X+sin(PI*i/30)*MR,Y-cos(PI*i/30)*MR));
Hlines.add(new Line2D.Double(300,300,X+sin(PI*i/30)*HR,Y-cos(PI*i/30)*HR));
}
}
public void reset(int h,int m,int s)
{
Stag=s;Mtag=m;Htag=h;
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
g2.setPaint(new GradientPaint(80,80,Color.red,520.0F,520.0F,Color.BLUE));//构造一个简单的非周期性 GradientPaint 对象。
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//ALPHA_INTERPOLATION 提示是一个提供高级建议的常规提示,控制是否在多个线性可视效果计算过程中将颜色和 alpha 值转换到线性颜色空间。
//VALUE_ANTIALIAS_ON 抗锯齿提示值使用抗锯齿模式完成呈现
//优化图形
g2.fillOval(20,20,280*2,280*2);
g2.setPaint(Color.BLACK);
g2.fillOval(75, 75, 225*2, 225*2);
g2.setPaint(Color.CYAN);
g2.fillOval(115, 115, 185*2, 185*2);
g2.setPaint(Color.BLACK);
g2.fillOval(290, 290, 20, 20);
Font s14=new Font("宋体",Font.BOLD,20);
g2.setFont(s14);
g2.setPaint(Color.GREEN);
for(int i=1;i<60;i++)
{
if(i%5==0)
{
g2.drawString(""+(i/5),x+(float)sin(PI*i/30)*r-5,y-(float)cos(PI*i/30)*r+5);
continue;
}
Ellipse2D circle=new Ellipse2D.Double(x+(double)sin(PI*i/30)*r-4,y-(double)cos(PI*i/30)*r-4,8,8);
g2.fill(circle);
}
g2.drawString("12",x-11,y-r+5);
g2.setPaint(Color.BLACK);
g2.fillRect(x-74,y-82,154,23);
g2.setPaint(Color.WHITE);
g2.drawString(Month1+"月"+Date1+"日星期"+Week1,x-73,y-63);
g2.setStroke(new BasicStroke(5.0F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));//BasicStroke 类定义针对图形图元轮廓呈现属性的一个基本集合
g2.setPaint(Color.YELLOW);
if(Mtag<Mlines.size())
{
g2.draw(Mlines.get(Mtag));
}
else
{
g2.draw(Mlines.get(0));
}
if(Htag<Hlines.size())
{
g2.draw(Hlines.get(Htag));
}
else
{
g2.draw(Hlines.get(0));
}
if(Stag<Slines.size())
{
g2.draw(Slines.get(Stag++));
}
else
{
Stag=0;
g2.draw(Slines.get(Stag++));
if(Mtag<Mlines.size())
{
Mtag++;
}
else
{
Mtag=0;
if(Htag>=Hlines.size())
{
Htag=0;
}
}
if(Mtag%12==0&&Htag<Hlines.size())g2.draw(Hlines.get(Htag++));
}
}
}
- Java小应用程序指针时钟
- java小时钟
- Java小时钟
- java小程序:小时钟
- 小时钟程序-原创Java
- java 小应用程序
- Java小应用程序
- Java小应用程序
- 时钟指针重合问题java实现
- 【Matlab编程】Matlab及Java小时钟
- 小时钟
- java的应用程序和小应用程序
- JAVA小画板(应用程序)
- 南邮JAVA程序设计实验4 线程程序设计(指针式时钟)
- 数字时钟应用程序
- 第二课 Java小应用程序 java applet
- java做的一个时钟的小程序
- java实现一个小的时钟(当前时间)
- 比较 非死不可!
- C# session操作
- vc 2005快捷键
- C/C++位操作技巧
- 小心访问越界
- Java小应用程序指针时钟
- C#委托概述
- 位运算符的一些简单应用
- 位运算符的一些简单应用
- 位运算符的一些简单应用
- javascript中showModalDialog()方法的介绍
- 择录自WINDOWS源码的提权函数
- Flex 实践——信息管理系统version1 展示
- 第一个struts2程序