漂亮时钟java完整代码

合集下载

精美时钟(附代码)

精美时钟(附代码)
<EMBED style="DISPLAY: block; TEXT-ALIGN: center" src=/clocks/226655.swf width=200 height=200 type=application/x-shockwave-flash wmode="transparent">
<EMBED style="DISPLAY: block; TEXT-ALIGN: center" src=/clocks/985396.swf width=200 height=200 type=application/x-shockwave-flash wmode="transparent">
<P align=center><EMBED style="DISPLAY: block; TEXT-ALIGN: center" src=/clocks/693125.swf width=200 height=200 type=application/x-shockwave-flash wmode="transparent"></P>
<EMBED style="DISPLAY: block; TEXT-ALIGN: center" src=/clocks/907783.swf width=200 height=200 type=application/x-shockwave-flash wmode="transparent">
<EMBED style="DISPLAY: block; TEXT-ALIGN: center" src=/clocks/425980.swf width=200 height=200 type=application/x-shockwave-flash wmode="transparent">

java实验一:写一个桌面时钟

java实验一:写一个桌面时钟

java实验⼀:写⼀个桌⾯时钟⼀共有三个类:这个是第⼀个,主函数类:public class Programe extends JFrame {/** 四个部分: 1.画出窗体和⾯板 2.画出指针 3.时间转换的算法 4.让指针动起来*/public static void main(String[] string) {Programe frame = new Programe();// 创建窗体对象frame.setVisible(true);// 设置窗体可见,没有该语句,窗体将不可见,此语句必须有,否则没有界⾯就没有意义}public Programe() {setUndecorated(false);// 打开窗体修饰setAlwaysOnTop(true);// 窗体置顶getContentPane().setLayout(new BorderLayout()); // 在窗体的基础上加⼊⾯板:Panel ⽽后就可以在⾯板上进⾏其他操作 // 指定的组件之间的⽔平间距构造⼀个边界布局setBounds(100, 30, 217, 257);// ⽤于设置窗⼝尺⼨和位置;ClockPaint clockPaint = new ClockPaint();// 创建时钟⾯板getContentPane().add(clockPaint);new Thread() {// 继承Thread类创建线程,更新时钟⾯板界⾯@Overridepublic void run() {// 重写run⽅法try {while (true) {sleep(1000);// 休眠1秒clockPaint.repaint();// 重新绘制时钟⾯板界⾯}} catch (InterruptedException e) {e.printStackTrace();// 在命令⾏打印异常信息在程序中出错的位置及原因。

}}}.start();}}这个是第⼆个,画时钟的类:package clock;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import javax.swing.ImageIcon;import javax.swing.JPanel;public class ClockPaint extends JPanel {private static final BasicStroke H = new BasicStroke(4);// 指针粗细private static final BasicStroke M = new BasicStroke(3);private static final BasicStroke S = new BasicStroke(2);private final static int secLen = 60; // 指针长度private final static int minuesLen = 55;private final static int hoursLen = 36;ImageIcon background;// 背景private int X;// 中⼼坐标private int Y;public ClockPaint() {background = new ImageIcon(getClass().getResource("时钟.jpg"));// 加载图⽚int Width = background.getIconWidth();// 获取图⽚宽度X = Width / 2 + 2;// 获取图⽚中间坐标int Height = background.getIconHeight();// 获取图⽚长度Y = Height / 2 - 8;// 获取图⽚中间坐标setPreferredSize(new Dimension(Width, Height));// 设置最好的⼤⼩(固定⽤法)}public void paint(Graphics g) {Graphics2D g2 = (Graphics2D) g;g2.drawImage(background.getImage(), 0, 0, this);ClockData data = new ClockData(secLen, minuesLen, hoursLen);// 绘制时针g2.setStroke(H);// 设置时针的宽度g2.setColor(Color.RED);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.hX, Y - data.hY);// 绘制时针// 绘制分针g2.setStroke(M);// 设置分针的宽度g2.setColor(Color.orange);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.mX, Y - data.mY);// 绘制分针// 绘制秒针g2.setStroke(S);// 设置秒针的宽度g2.setColor(Color.GREEN);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.sX, Y - data.sY);// 绘制秒针// 绘制中⼼圆g2.setColor(Color.BLUE);g2.fillOval(X - 5, Y - 5, 10, 10);}}这个是第三个,获取时钟的数据:package clock;import static java.util.Calendar.HOUR;import static java.util.Calendar.MINUTE;import static java.util.Calendar.SECOND;import java.util.Calendar;public class ClockData {public int sX, sY, mX, mY, hX, hY;public ClockData(int secLen, int minuesLen, int hoursLen) {Calendar calendar = Calendar.getInstance();// 获取⽇历对象int sec = calendar.get(SECOND);// 获取秒值int minutes = calendar.get(MINUTE);// 获取分值int hours = calendar.get(HOUR);// 获取时值// 计算⾓度int hAngle = hours * 360 / 12 + (minutes / 2) ;// 时针⾓度(每分钟时针偏移⾓度)int sAngle = sec * 6; // 秒针⾓度int mAngle = minutes * 6 + (sec / 10);// 分针⾓度// 计算秒针、分针、时针指向的坐标sX = (int) (secLen * Math.sin(Math.toRadians(sAngle)));// 秒针指向点的X坐标(将⾓度转换为弧度) sY = (int) (secLen * Math.cos(Math.toRadians(sAngle))); // 秒针指向点的Y坐标mX = (int) (minuesLen * Math.sin(Math.toRadians(mAngle))); // 分针指向点的X坐标mY = (int) (minuesLen * Math.cos(Math.toRadians(mAngle))); // 分针指向点的Y坐标hX = (int) (hoursLen * Math.sin(Math.toRadians(hAngle))); // 时针指向点的X坐标hY = (int) (hoursLen * Math.cos(Math.toRadians(hAngle))); // 时针指向点的Y坐标}}以上参考了其他⼤佬的代码,等我找到原地址再补上:D做了部分修改,加了部分注释,java⼩⽩还请客官您多多包含呀!。

javascript特效--制作背景电子钟(整点时祝贺生日快乐)

javascript特效--制作背景电子钟(整点时祝贺生日快乐)

javascript特效--制作背景电⼦钟(整点时祝贺⽣⽇快乐)1 <!DOCTYPE html>2 <html lang="en">3 <head>4 <meta charset="UTF-8">5 <title>背景时钟</title>67 </head>8 <body>9 <p id="bgclockshade" style="position:absolute;visibility:visible;font-family:Verdana;color:#FFAAAA;font-size:100px;top:10px;left:152px"> </p> 10111213 <script type="text/javascript">1415function clockDemo(){16//先获得时间17var time=new Date();18var hour=time.getHours(); //时19var minute=time.getMinutes(); //分20var second=time.getSeconds(); //秒2122if(eval(hour)<10) hour="0"+hour; //如果不满1023if(eval(minute)<10) minute="0"+minute;24if(eval(second)<10) second="0"+second;25var timeStr=hour+":"+minute+":"+second;26if(eval(hour)==0 && eval(minute)==0 && eval(second)==0) alert("⽣⽇快乐!");2728var bgclockshade=document.getElementById("bgclockshade");29303132 bgclockshade.innerHTML=timeStr;333435var timer= setTimeout("clockDemo()",200); //没0.2秒刷新时间3637 }3839 clockDemo(); //启动⼊⼝40 </script>4142 </body>43 </html>。

JAVA时钟代码

JAVA时钟代码

import javax.swing.*; //时钟import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.*;import java.util.Calendar;import java.util.GregorianCalendar;class Clock extends JFrame implements ActionListener{ int x,y,x0,y0,r,h,olds_x,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,ss,mm,hh,old_m,old_h,ang;final double RAD=Math.PI/180; //度数转换成弧度的比例//构造函数创建了一个窗体public Clock(){ super("时钟"); //设置标题setSize(250,250); //设置窗口尺寸setBackground(Color.WHITE); //设置背景颜色setLocation(300,150); //设置窗口位置坐标setResizable(false); //使窗口可以最小化和关闭,但是不能任意改变大小setVisible(true); //设置组建可见int delay = 100; //设置延时//创建一个监听事件ActionListener drawClock = new ActionListener(){ public void actionPerformed(ActionEvent evt) { repaint(); } };new Timer(delay,drawClock).start(); //创建时间计数器,每秒触发一次}public void actionPerformed(ActionEvent e){//实现ActionListener接口必须实现的方法}//绘制图形public void paint(Graphics g){Graphics2D g2D = (Graphics2D)g;Insets insets = getInsets();int L = insets.left/2,T = insets.top/2;h = getSize().height;g.setColor(Color.black);//画圆g2D.setStroke(new BasicStroke(4.0f));g.drawOval(L+40,T+40,h-80,h-80);r=h/2-40;x0=40+r-5+L;y0=40+r-5-T;ang=60;//绘制时钟上的12个数字for(int i=1;i<=12;i++){x=(int)((r-9)*Math.cos(RAD*ang)+x0);y=(int)((r-9)*Math.sin(RAD*ang)+y0);g.drawString(""+i,x,h-y);ang-=30;}//获得当前系统时间Calendar now= new GregorianCalendar();int nowh= now.get(Calendar.HOUR_OF_DAY); int nowm= now.get(Calendar.MINUTE);int nows= now.get(Calendar.SECOND);String st;if(nowh<10) st="0"+nowh;else st=""+nowh;if(nowm<10) st+=":0"+nowm;else st+=":"+nowm; if(nows<10) st+=":0"+nows;else st+=":"+nows;//在窗体上显示时间g.setColor(Color.white);//g.fillRect(L,T,50,28);//g.setColor(Color.black);//g.drawString(st,L+2,T+26);////计算时间与度数的关系ss=90-nows*6;mm=90-nowm*6;hh=90-nowh*30-nowm/2;x0=r+40+L;y0=r+40+T;g2D.setStroke(new BasicStroke(1.0f));//秒针粗细//擦除秒针if(olds_x>0){g.setColor(getBackground());g.drawLine(x0,y0,olds_x,h-olds_y);}Else{old_m = mm;old_h = hh;}//绘制秒针x=(int)(r*0.9*Math.cos(RAD*ss))+x0;//长度y=(int)(r*0.9*Math.sin(RAD*ss))+y0-2*T;g.setColor(Color.black);//指针颜色g.drawLine(x0,y0,x,h-y);//轨迹olds_x=x;olds_y=y;g2D.setStroke(new BasicStroke(2.2f));//分针粗细//擦除分针if(old_m!=mm){g.setColor(getBackground());g.drawLine(x0,y0,oldm_x,h-oldm_y);}//绘制分针x=(int)(r*0.7*Math.cos(RAD*mm))+x0;//长度y=(int)(r*0.7*Math.sin(RAD*mm))+y0-2*T;g.setColor(Color.red);//颜色g.drawLine(x0,y0,x,h-y);oldm_x=x;oldm_y=y;old_m=mm;g2D.setStroke(new BasicStroke(3.4f));//时针粗细//擦除时针if(old_h!=hh){g.setColor(getBackground());g.drawLine(x0,y0,oldh_x,h-oldh_y);}//绘制时针x=(int)(r*0.5*Math.cos(RAD*hh))+x0;//长度y=(int)(r*0.5*Math.sin(RAD*hh))+y0-2*T;g.setColor(Color.red);//颜色g.drawLine(x0,y0,x,h-y);oldh_x=x;oldh_y=y;old_h=hh;}public static void main(String[] args){ Clock c = new Clock(); } }3Dimport java.applet.Applet;import java.awt.BorderLayout;import com.sun.j3d.utils.applet.MainFrame;import com.sun.j3d.utils.geometry.*;import com.sun.j3d.utils.universe.*;import javax.media.j3d.*;import javax.vecmath.*;import com.sun.j3d.utils.behaviors.mouse.MouseRotate;import com.sun.j3d.utils.behaviors.mouse.MouseZoom;import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;public class AWTFrameJ3D{ private static final long serialVersionUID = 1L;Canvas3D cv = null;public static void main(String s[]){ AWTFrameJ3D hd = new AWTFrameJ3D();hd.constractJava3D();}/*构造方法创建Frame和Canvas3D画布对象,并将Canvas3D嵌入到Frame中*/public AWTFrameJ3D(){GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevice device = env.getDefaultScreenDevice();GraphicsConfiguration config = device.getBestConfiguration(template);// 新建Canvas3D对象,Canvas3D对象是一个用于显示虚拟世界场景的绘制结果的画布cv = new Canvas3D(config);// 新建Frame对象Frame dframe = new Frame(config);dframe.setTitle("模型读取中");dframe.setLayout(new BorderLayout());// 将Canvas3D对象嵌入到Frame对象中dframe.add(cv, BorderLayout.CENTER);dframe.setSize(500, 400);// 添加窗口监听器实现关闭窗口(Frame),关闭窗口时退出程序dframe.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent ev){ System.out.print("退出程序!");System.exit(0);} }};// 使用Toolkit更改Java应用程序标题栏默认图标Toolkit tk = Toolkit.getDefaultToolkit();Image image = tk.createImage("images/earth.jpg"); /* image.gif是你的图标 */ dframe.setIconImage(image);// 使用Toolkit把默认的鼠标图标改成指定的图标:// Toolkit tk=Toolkit.getDefaultToolkit();Image img = tk.getImage("images/earth.jpg"); /* mouse.gif是你的图标 */Cursor cu = tk.createCustomCursor(img, new Point(10, 10), "stick");dframe.setCursor(cu);// 现将Frame窗口可视化之后,再绘制3D场景内容dframe.setVisible(true);}/**构建3D虚拟世界场景*/public void constractJava3D(){ // 创建场景图分支BranchGroup bg = createSceneGraph();pile();// 将观察分支关联到一个Canvas3D对象,以显示视图的绘制结果SimpleUniverse su = new SimpleUniverse(cv);su.getViewingPlatform().setNominalViewingTransform();// 把场景图关联到SimpleUniverse对象之后,整个场景就开始绘制了su.addBranchGraph(bg);// 现绘制3D场景内容,再将Frame窗口可视化// dframe.setVisible(true);}/**创建3D场景内容*/private BranchGroup createSceneGraph(){ // 创建BranchGroup对象作为根节点BranchGroup root = new BranchGroup();// objectAppearance ap = new Appearance();ap.setMaterial(new Material());Font3D font = new Font3D(new Font("SansSerif", Font.PLAIN, 1),new FontExtrusion());Text3D text = new Text3D(font, "Hello 3D");Shape3D shape = new Shape3D(text, ap);// transformationTransform3D tr = new Transform3D();tr.setScale(0.5);tr.setTranslation(new Vector3f(-0.95f, -0.2f, 0f));TransformGroup tg = new TransformGroup(tr);root.addChild(tg);tg.addChild(shape);// lightPointLight light = new PointLight(new Color3f(Color.white), new Point3f(1f, 1f, 1f), new Point3f(1f, 0.1f, 0f));BoundingSphere bounds = new BoundingSphere();light.setInfluencingBounds(bounds);root.addChild(light);return root;}}。

Java模拟时钟制作案例

Java模拟时钟制作案例

美化指针

调用AffineTransform
public AffineTransform sc =new AffineTransform(); sc.setToRotation(Math.PI/30f*(s1-15),125,125); g2.fill(tick_s.createTransformedShape(sc));
程序代码

主类
程序代码
程序代码
运行效果

运行效果
面板刻度


绘制刻度
l1=new Line2D.Double[60]; for(int i=0 ;i<l1.length;i++) { double b[]=new double[4]; int j; if(i%5==0){ if(i%15==0){ j=50; }else { j=60; }
运行效果程序代码程序代码程序代码程序代码程序代码代码优化与改进以上的代码已经能基本完成时钟的功能
Java模拟时钟制 作案例
Java开发实例
需求分析
模拟时钟,把它放在程序中可以给人一种清 新的感觉。比起数字时钟来说,有一定的真 实感怀旧情结。看到秒针一下一下的转动, 时时提醒,时间在不断流逝,要我们珍惜时 间。 子在川上曰:逝者如斯夫。
坐标的转换,使用方法
调用方法:
p0=xy(125,125,75,s1*6); s.x1=p0.getX(); s.y1=p0.getY(); p0=xy(125,125,65,m1*6); m.x1=p0.getX(); m.y1=p0.getY(); p0=xy(125,125,55,(h1*30+m1/2f)); h.x1=p0.getX(); h.y1=p0.getX();

漂亮时钟java完整代码

漂亮时钟java完整代码

漂亮时钟java完整代码这个时钟是用java写的,我觉得很完美,其中加载了声音和背景图片,我会把图片贴在这里,至于背景音乐可以根据自己的需要改动,程序运行后效果如下:今天把这个程序贴在这里,希望能帮到学习java的学弟学妹们。

源代码如下:import java.applet.Applet;import java.applet.AppletContext;import java.applet.AudioClip;import java.awt.*;import java.awt.event.*;import java.io.PrintStream;import java.util.Date;public class Clock extends Applet implements Runnable{Thread th1 = null;Image offScreenImage = null;Graphics offScreen = null;Image picture = null;int icount = 0;AudioClip song;private String n="look! My clock!";private String m="made by:";private String p="jessie with the number 200501109";public Clock(){}public void init(){try{offScreenImage = createImage(800, 600);offScreen = offScreenImage.getGraphics();}catch(Exception _ex){offScreen = null;}picture = getImage(getCodeBase(), "Clockscreen.jpg"); song=getAudioClip(getCodeBase(),"song.wav");song.loop();//加载声音}public void start(){th1 = new Thread(this);th1.start();}public void stop(){th1 = null ;}public static int vectorX(int i, int h, int j){int k = (i + h) % 360;int l = (int)((double)j* Math.cos((double)k * 2 * Math.PI / 360));return l;}public static int vectorY(int i, int h, int j){int k = (i + h) % 360;int l = (int)((double)j* Math.sin((double)k * 2 * Math.PI / 360)); return l;}public void run(){Thread.currentThread().setPriority(5);do{try{Thread.sleep(1000);}catch(InterruptedException _ex) { }repaint();}while(true);}public void paint(Graphics g) //防止闪屏{update(g);}public synchronized void update(Graphics g){if(offScreen != null){paintApplet(offScreen);g.drawImage(offScreenImage, 0, 0, this);return;}else{paintApplet(g);return;}}public void paintApplet(Graphics g)//具体画页面 {g.fillRect(0, 0, 677, 555);g.drawImage(picture, 0, 0, this);g.setColor(Color.pink); //设置字体颜色g.setFont(new Font("Arial",Font.PLAIN,24)); //设置文本字体和大小 g.drawString(n,20,50); //写文本“look!My clock!”g.drawString(m,200,510); //写文本"made by:"g.drawString(p,300,550);//写文本"jessie with the number 200501109"g.setColor(Color.pink);//画表盘g.drawOval(425,58,200,200);g.drawOval(415,48,220,220);for(int x=0;x<360;x+=6){if(x%5!=0){int u1=vectorX(x,270,100);int v1=vectorY(x,270,100);int u2=vectorX(x,270,110);int v2=vectorY(x,270,110);g.setColor(Color.pink);g.drawLine(525+u1,158+v1,525+u2,158+v2);}else{int u3=vectorX(x,270,90);int v3=vectorY(x,270,90);int u4=vectorX(x,270,110);int v4=vectorY(x,270,110);g.setColor(Color.pink);g.drawLine(525+u3,158+v3,525+u4,158+v4);}};String s1="12";String s2="3";String s3="6";String s4="9";g.setColor(Color.pink);g.drawString(s1,505,50);g.drawString(s2,635,165);g.drawString(s3,520,285);g.drawString(s4,400,165);g.fillOval(522,155,6,6);//表盘中心的圆点和圆圈g.setColor(Color.yellow);g.drawOval(518,149,14,14);Date date = new Date();int i = date.getMinutes();int j = i * 6;int kk = (date.getHours() ) % 24;g.setFont(new Font("Helvetica", 1, 28));//设置字体,显示数码时间;String s = new String();s = kk+ ":" + date.toString().substring(14, 19);g.setColor(Color.pink);g.drawString(s,465, 320);int k= (date.getHours() ) % 12;//开始获取时间经过计算画出时针、分针、秒针 int l = k * 30 + (i / 12) * 6;int a = vectorX(l,255,63);int b= vectorY(l,255,63);int c = vectorX(l,270,63);int d= vectorY(l,270,63);int x1[]={525,525+a/4,525+c};int y1[]={158,158+b/4,158+d};g.setColor(Color.pink);g.fillPolygon(x1,y1,3);int a1 = vectorX(j,255,73);int b1= vectorY(j,255,73);int c1= vectorX(j,270,73);int d1= vectorY(j,270,73);int x2[]={525,525+a1/4,525+c1};int y2[]={158,158+b1/4,158+d1};g.setColor(Color.pink);g.fillPolygon(x2,y2,3);int k1 = date.getSeconds() * 6;int a2 = vectorX(k1,255,85);int b2= vectorY(k1,255,85);int c2 = vectorX(k1,270,85);int d2= vectorY(k1,270,85);int x3[]={525,525+a2/4,525+c2};int y3[]={158,158+b2/4,158+d2};g.setColor(Color.pink);g.fillPolygon(x3,y3,3);}}然后还有html文件,内容如下:<HTML><BODY><APPLET CODE="Clock.class"HEIGHT=597 WIDTH=773></APPLET> </BODY></HTML>其中的图片如下。

java钟表时钟显示时间

java钟表时钟显示时间

java钟表时钟显示时间表盘式时钟,并显import java.awt.*;import java.awt.event.*;import javax.swing.*;import sun.util.calendar.Gregorian;import java.util.Calendar;import java.util.GregorianCalendar;public class Clock&lt;Calender&gt; extends JFrame implements ActionListener{int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y, ss,mm,hh,old_m,old_h,ang; final double RAD = Math.PI/180;public Clock(){super(&quot;Java时钟&quot;);setDefaultCloseOperation(3);Image image = getToolkit().getImage(&quot;clock.gif&quot;);setIconImage(image);setSize(200,200);setBackground(Color.black);setLocation(300,150);setResizable(false);show();int delay = 1000;//创建一个监听事件ActionListener drawClock = new ActionListener(){ public void actionPerformed(ActionEvent evt){ repaint();}};//创建一个时间计数器,每一秒触发一次new Timer(delay,drawClock).start();}//实现ActionListener接口必须实现的方法public void actionPerformed(ActionEvent evt){} //绘制图形public void paint(Graphics g){Graphics2D g2D = (Graphics2D)g;Insets insets = getInsets();int L = insets.left/2, T = insets.top/2;h = getSize().height;g.setColor(Color.white);//画圆g2D.setStroke(new BasicStroke(4.0f));g.drawOval(L+40, T+40, h-80, h-80);r = h/2 - 40;x0 = 40 + r - 5 + L;y0 = 40 + r - 5 - T;ang = 60;//绘制时钟上的12个字for(int i = 1;i &lt;= 12;i ++){x = (int)((r+10)*Math.cos(RAD*ang)+x0);y = (int)((r+10)*Math.sin(RAD*ang)+y0);g.drawString(&quot;&quot;+i, x, h-y);ang -=30;}//获得现在的时间Calendar now = new GregorianCalendar();int nowh = now.get(Calendar.HOUR_OF_DAY); int nowm = now.get(Calendar.MINUTE);int nows = now.get(Calendar.SECOND); String st;if(nowh &lt; 10)st = &quot;0&quot;+nowh;else st = &quot;&quot;+nowh;if(nowm&lt;10)st += &quot;:0&quot;+nowm; else st += &quot;:&quot;+nowm;if(nows&lt;10)st += &quot;:0&quot;+nows; else st += &quot;:&quot;+nows;//在窗体上显示时间g.setColor(Color.pink);g.fillRect(L, T, 50, 28);g.setColor(Color.blue);g.drawString(st,L+2,T+26);//计算时间与度数的关系ss = 90 - nows*6;mm = 90 - nowm*6;hh = 90 - nowh*30 - nowm/2;x0 = r+40+L;y0 = r+40+T;g2D.setStroke(new BasicStroke(1.2f));//擦除秒针if(olds_x &gt; 0){g.setColor(getBackground());g.drawLine(x0,y0,olds_x,h-olds_y);}else{old_m = mm;old_h = hh;}//绘制秒针x = (int)(r*0.9*Math.cos(RAD*ss))+x0;y = (int)(r*0.9*Math.sin(RAD*ss))+y0-2*T;g.setColor(Color.yellow);g.drawLine(x0,y0,x,h-y);olds_x = x;olds_y = y;g2D.setStroke(new BasicStroke(2.2f));//擦除分针if(old_m!=mm){g.setColor(getBackground());g.drawLine(x0,y0,oldm_x,h-oldm_y);}//绘制分针x = (int)(r*0.7*Math.cos(RAD*mm))+x0;y = (int)(r*0.7*Math.sin(RAD*mm))+y0-2*T;g.setColor(Color.green);g.drawLine(x0,y0,x,h-y); oldm_x = x;oldm_y = y;old_m = mm;g2D.setStroke(new BasicStroke());//擦除时针if(old_h!=hh){g.setColor(getBackground());g.drawLine(x0,y0,oldh_x,h-oldh_y);}//绘制时针x = (int)(r*0.5*Math.cos(RAD*hh))+x0;y = (int)(r*0.5*Math.sin(RAD*hh))+y0-2*T; g.setColor(Color.red);g.drawLine(x0,y0,x,h-y);oldh_x = x;oldh_y = y;old_h = hh;}public static void main(String[] args){Clock c = new Clock(); }}示数字时间。

JAVA可视化闹钟源码

JAVA可视化闹钟源码

JAVA可视化闹钟源码概述⼀些同学的Java课设有这样⼀个问题,⽐较感兴趣就做了⼀下功能介绍:1、可增加闹钟2、可删除闹钟3、时间到了响铃4、关闭闹钟不会丢失闹钟(因为闹钟存储在txt⽂件中,不会因程序关闭就终⽌)缺点1、没有使⽤多线程,闹钟响起时只能等待1分钟或者关闭程序2、界⾯设计不够美观,后期有时间会进⾏修改,重新设计3、没有闹钟修改的功能,虽然可以通过增删来达到修改的⽬的,但功能仍然属于空缺范围1package Clock;23import sun.audio.AudioPlayer;4import sun.audio.AudioStream;56import javax.swing.*; //awt和swing是做界⾯⽤的类7import java.awt.*;8import java.awt.event.ActionEvent;9import java.awt.event.ActionListener;10import java.awt.event.WindowAdapter;11import java.awt.event.WindowEvent;12import java.io.*; //io流⽤于读写⽂件,包括增删闹钟、打开铃声等等13import java.util.Calendar; //⽤于获取当前时间的类14import java.util.GregorianCalendar;//标准阳历15import java.util.StringTokenizer; //读取⽂件转换成计算机语⾔⽤的类16/*171 计时器18要求1:⼀个带有可视化界⾯的钟表。

19要求2:可以添加若⼲个闹钟。

20要求3:具备持久化功能,关闭程序不能丢失闹钟。

21要求4:闹钟是可编辑,可删除的。

2223实现:先创建⼀个⾯板显⽰闹钟,⾯板内创建按钮增加闹钟,按钮查看闹钟,按钮删除闹钟24线程间隔1s读取时间和闹钟⽐较2526*/27public class ClockTry extends JFrame implements Runnable {28/* 成员变量 */29private JPanel xx; //总的⾯板30private JComboBox ho; //hour选择时间的下拉框31private JComboBox mi; //min选择分钟的下拉框32private JButton tjnz; //添加闹钟的按钮33private JButton schour; //删除闹钟的按钮34private String filename = "D://homework//java//Gui//src//Clock//0.wav"; //所有的路径改这两个地⽅就可以了35private String pathname = "D://homework//java//Gui//src//Clock//nz.txt"; // 绝对路径或相对路径都可以,写⼊⽂件时演⽰相对路径,读取以上路径的input.txt⽂件3637private int HOUR; //定义HOUR⽤于接收按钮按下从下拉框中获取的数据38private int MIN; //同上3940int x = 100, y = 100, r = 100; // (x,y)为(0,0)点,表⽰原点41int h, m, s; // 时,分,秒42double rad = Math.PI / 180; // 1°4344private String[][] str= new String[100][2]; //定义⼆维数组,⽤于存储以及对⼩时和分针的操作,暂定为100个闹钟于是定义为【100】【2】45/**46 *读取⽂件,每次的增删都需要对数据进⾏读取,将数据写在⾯板上也需要读取数据47*/48public void readFile() {49try (FileReader reader = new FileReader(pathname); //创建⼀个FilReader对象,将⽂件读出来,相当于请教⼀个当地⼈,当地⼈了解本地⽂化,但是语⾔不通听不懂50 BufferedReader br = new BufferedReader(reader) // 建⽴⼀个对象,它把⽂件内容转成计算机能读懂的语⾔,相当于请⼀个翻译,把当地⼈读取的东西转换成计算机能懂的东西51 ) {52 String line;5354int i =0;55while ((line = br.readLine()) != null) { //翻译理解的东西存到line⾥⾯56int j =0;57 StringTokenizer st = new StringTokenizer(line, ":"); //重点:由于存储数据时都是时间,道理来说都是数字,⽆法区分⼩时部分和分钟部分58while (st.hasMoreTokens()){ //每读取⼀次读到的内容 //所以这⾥⽤分割符“:”来分割,相应的,后⾯的写⼊⽂件也应该已“:”分割进⾏写⼊59 str[i][j]=st.nextToken(); //把读到的内容存储在数组⾥⾯便于后⾯的操做——增删60 j++; //包括上⾯的j=0,是将for循环拆分放进while循环中,要不然循环写起来也很⿇烦61 }62//System.out.print(str[i][0]+":"+str[i][1]); 写的时候⽤来在控制台打印查看效果63//System.out.println();64 i++;65 j = 0;66 }67 } catch (IOException e) {68 e.printStackTrace(); //try……catch抛出异常69 }70 }717273/**74 * 写⼊TXT⽂件75*/76public void writeFile() {77 HOUR = Integer.valueOf(ho.getSelectedIndex()); //获取下拉框中的值,存储到HOUR中78 MIN = Integer.valueOf(mi.getSelectedIndex());79 String x = HOUR + ":" + MIN;80try (FileWriter writer = new FileWriter(pathname,true); //同上⾯的读取,本地⼈写⼊,注意:后⾯的append:true是表⽰不是重新写,⽽是在后⾯追加81 BufferedWriter out = new BufferedWriter(writer) //翻译⼀下再写⼊82 ) {8384 out.write(HOUR + ":" + MIN + "\r\n"); //这⾥写⼊的时候把:写进去了!85 out.flush(); // 把缓存区内容压⼊⽂件,计算机的存储过程,存在缓存区再写⼊⽂件86 JOptionPane.showMessageDialog(null,"闹钟添加成功!","添加闹钟提醒",RMATION_MESSAGE); //提⽰框:添加闹钟成功87 } catch (IOException e) {88 e.printStackTrace();8990 }9192 }939495/**96 * 删除闹钟,实际上是先将要删除的数据找到移除数组,再将数组重新写⼊,所以要先读取⽂件,再重新写⼊97*/98public void shanchuFile() {99 HOUR = Integer.valueOf(ho.getSelectedIndex());100 MIN = Integer.valueOf(mi.getSelectedIndex());101try (FileWriter writer = new FileWriter(pathname); //没有append:true,表⽰重新写!102 BufferedWriter out = new BufferedWriter(writer)103 ) {104 readFile();105for (int i = 0; i < 100; i++) {106if (Integer.valueOf(str[i][0])==HOUR && Integer.valueOf(str[i][1])==MIN){107continue;108 }109else{110 out.write(str[i][0]+":"+str[i][1]+"\r\n"); // \r\n即为换⾏111 }112 }113114//out.write("1"+"1"+"\r\n"); // \r\n即为换⾏115 out.flush(); // 把缓存区内容压⼊⽂件116 } catch (IOException e) {117 e.printStackTrace();118 }catch (NumberFormatException e){119 System.out.println("this isn't exist!");120 JOptionPane.showMessageDialog(null,"该闹钟已删除!","删除闹钟提醒",RMATION_MESSAGE); //弹窗提⽰121 }122 }123124/* 初始化函数 */125public void init() {126127 Calendar now = new GregorianCalendar(); //获取当前时间128/*129 * GregorianCalendar(标准阳历)130 * 是Calendar(⽇历)【国际环境下都能运⾏的程序】131 * 的⼦类132*/133 s = now.get(Calendar.SECOND) * 6; // 秒针转换成⾓度:1秒,秒针动⼀次,转动6°134 m = now.get(Calendar.MINUTE) * 6; // 分针转换为⾓度:1分,分针动⼀次,转动6°135 h = now.get(Calendar.HOUR) * 30 + now.get(Calendar.MINUTE) / 12 * 6; // 先把分化为⼩时,再乘以6°,因为分针转12°,时针才会转1°,⼀⼩时中间有5格,数学问题136/*137 * Calendar.HOUR 显⽰范围:1-12(⽆论AM还是PM) Calendar.HOUR_OF_DAY 显⽰范围:1-24(包括PM138*/139140 Thread t = new Thread(this); //添加线程,线程⽬标是整个程序,this141 t.start(); //线程就绪142 }143144public void paint(Graphics g) { //awt中的⽅法,因为要时时显⽰闹钟,所以不得不使⽤绘画的⽅式,不断重绘145super.paint(g);146/*147 * paint(g)函数会重绘图像,要加上super.paint(g),表⽰在原来图像的基础上,再画图。

java钟表程序

java钟表程序

一个java的钟表程序import java.awt.*;import java.util.*;import javax.swing.*;import java.awt.event.*;public class Clock extends JPanel{int CLOCK_RADIUS=200;int X_CENTER=300,Y_CENTER=300;static int second,minute,hour;static int year,month,day,week;int xSecond,ySecond;int xMinute,yMinute;int xHour,yHour;String timeStr,str1,str2,str3;static String dateStr;javax.swing.Timer timer;static String weekDisp[]={"一","二","三","四","五","六","日"};public Clock(){setBackground(Color.white);setSize(800,800);ActionListener clockTik=new ActionListener(){public void actionPerformed(ActionEvent ec){second++;if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==13) hour=1;repaint();}};new javax.swing.Timer(1000,clockTik).start();}public void paint(Graphics g){int xPos,yPos;double alfa;super.paint(g);for(int i=0,num=12;i<360;i+=6){alfa=Math.toRadians(i);xPos=X_CENTER+(int)(CLOCK_RADIUS*Math.sin(alfa));yPos=Y_CENTER-(int)(CLOCK_RADIUS*Math.cos(alfa));if(i%30==0){if (num%3==0)g.setColor(Color.red);elseg.setColor(Color.black);g.drawString(""+num,xPos-5,yPos+3);num=(num+1)%12;}else{g.setColor(Color.black);g.drawString(".",xPos,yPos);}}g.fillOval(X_CENTER-4,Y_CENTER-4,8,8); //表盘中心//画秒针xSecond=(int)(X_CENTER+(CLOCK_RADIUS-10)*Math.sin(second*(2*Math.PI/60)));ySecond=(int)(Y_CENTER-(CLOCK_RADIUS-10)*Math.cos(second*(2*Math.PI/60)));g.setColor(Color.red);g.drawLine(X_CENTER,Y_CENTER,xSecond,ySecond);//画分针xMinute=(int)(X_CENTER+(CLOCK_RADIUS-40)*Math.sin((minute+second/60)*(2*3.14/60)));yMinute=(int)(Y_CENTER-(CLOCK_RADIUS-40)*Math.cos((minute+second/60)*(2*3.14/60)));g.setColor(Color.red);g.drawLine(X_CENTER,Y_CENTER,xMinute,yMinute);//画时针xHour=(int)(X_CENTER+(CLOCK_RADIUS-70)*Math.sin((hour+minute/60+second/(60*60))*(2*3.14/12))); yHour=(int)(Y_CENTER-(CLOCK_RADIUS-70)*Math.cos((hour+minute/60+second/(60*60))*(2*3.14/12)));g.setColor(Color.red);g.drawLine(X_CENTER,Y_CENTER,xHour,yHour);//显示文字式样的时间if(hour<10)str1="0"+hour+":";elsestr1=hour+":";if(minute<10)str2="0"+minute+":";elsestr2=minute+":";if(second<10)str3="0"+second;elsestr3=second+"";timeStr=str1+str2+str3;g.setFont(new Font("隶书",Font.ITALIC,20));g.drawString(timeStr,X_CENTER-40,Y_CENTER+CLOCK_RADIUS+50);g.drawString(dateStr,X_CENTER-90,Y_CENTER-CLOCK_RADIUS-50);}public void paintComponent(Graphics g)// 该方法自动调用,每次重画背景时删去原来的表盘{super.paintComponent(g);}public static void main(String args[]){JFrame clockFrame=new JFrame("钟表--clock");Container contentPane=clockFrame.getContentPane();clockFrame.setSize(800,800);//获取系统时间Calendar calendar = new GregorianCalendar();/*Date date = new Date();calendar.setTime(date);*/second=calendar.get(Calendar.SECOND);minute=calendar.get(Calendar.MINUTE);hour=calendar.get(Calendar.HOUR);if(hour>12) hour=hour-12;year=calendar.get(Calendar.YEAR);month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);week=calendar.get(Calendar.DAY_OF_WEEK);dateStr=year+"年"+month+"月"+day+"日"+"星期"+weekDisp[week-1];Clock clock=new Clock();contentPane.add(clock,BorderLayout.CENTER);clockFrame.pack();clockFrame.setVisible(true);}}。

Java 桌面小时钟

Java 桌面小时钟

Java 桌面小时钟一:简介:Java桌面小时钟制作过程:从网上收集可用的表盘、时针、分针、秒针图片,用Photoshop CS5进行修剪,在eclipse上利用Java绘图技术将图片加载在一个JPanel上,其中时针分针秒针按获取到的日期和计算公式进行旋转。

JPanel放在JFrame上,并将窗口设置为不规则形状。

后期为时钟添加事件响应,双击时关闭,鼠标位于窗口上时鼠标形状变为手型,窗口可拖拽。

鼠标悬停在时钟上时,可提示当前的年月日等信息。

程序运行结果如下:难点:本程序主要是控制时针分针秒针图片的旋转,从而实现时钟走动的效果。

但是在控制图片旋转的过程中遇到一个难题。

旋转后的图片会有锯齿现象,这回影响到程序的界面外观,解决办法是利用Java2D类的渲染参数,把渲染级别提高。

关键代码如下:// 获取绘图上下文的副本Graphics2D g1 = (Graphics2D) g.create();// 设置绘图上下文以质量为主,绘制图片,这样可以避免图片旋转时的锯齿g1.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHint s.VALUE_RENDER_QUALITY);二:类详解:MainFrame类本程序主类名称是MainFrame,它继承Jframe类成为一个窗体类。

在该类的构造方法中对窗体进行了初始化,为窗体控件进行了布局,并添加了必要的事件监听器。

关键代码如下:public MainFrame() {super();setAlwaysOnTop(true);setResizable(false);// 禁止调整窗体大小setUndecorated(true);//不装饰setShape(new Ellipse2D.Double(0, 0, 226, 224));//设置为圆形窗口setBounds(100, 100, 226, 224);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置鼠标为手型setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));// 创建自定义面板对象final ImagePanel imagePanel = new ImagePanel();// 添加面板对象到窗体getContentPane().add(imagePanel, BorderLayout.CENTER);// 为鼠标面板添加鼠标事件监听器imagePanel.addMouseListener(new MouseAdapter() {Public void mousePressed(final MouseEvent e) {fp = e.getPoint();}public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2) {System.exit(0);}}});// 为时钟面板的鼠标拖动事件中移动窗体imagePanel.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(final MouseEvent e) {JFrame frame = (JFrame) getRootPane().getParent();Point point = e.getLocationOnScreen();frame.setLocation(point.x - fp.x, point.y - fp.y);}});Thread imageThread = new Thread(imagePanel);imageThread.start();// 启动线程}ImagePanel类继承JPanel类编写一个自定义的面板控件,该控件类的名称为ImagePanel,作为本程序的背景面板,支持背景图片及时针、分针、秒针的旋转,图片的旋转是通过线程实现的,并且线程要控制旋转速度与时间。

java时钟程序(图片文本框)

java时钟程序(图片文本框)

java时钟程序(图片文本框)import java.awt.*;import javax.swing.*;import java.util.*;//定义测试类//所有变量名冲突的变量名串1了,不过就效果不好~~ public class TimerT est{//定义主函数public static void main(String[] args){//定义JFrame类的一个对象,并创建该对象MyTimer1 f = new MyTimer1();//调用MyTimer的show()方法f.show();//---------------------------------------------------- //调用类的构造函数MyTimer myTimer=new MyTimer();//调用类的显示时间函数myTimer.displayCurrentTime();//调用类的设置时间函数myTimer.setCurrentTime();//调用类的显示时间函数myTimer.displayCurrentTime();//调用类的显示时间函数myTimer.displayCurrentTime();System.exit(0);}}//定义MyTimer类class MyTimer1 extends JFrame{ static int count=0; //判断是否重定义了时间//构造函数public MyTimer1(){//定义窗口大小setSize(320, 200);//定义窗口标题setTitle("测试自定义时钟类!");Container c = getContentPane();// new ClockCanvas("北京时间", "GMT+8")c.add(new ClockCanvas("北京时间", "GMT+8")); } }//定义接口interface TimerListener1{void timeElapsed(Timer1 t);}class Timer1 extends Thread //类Timer1{private TimerListener1 target;private int interval;public Timer1(int i, TimerListener1 t){target = t;interval = i;setDaemon(true);}public void run(){ try{while (!interrupted()){sleep(interval);target.timeElapsed(this);}}catch(InterruptedException e) {}}}class ClockCanvas extends JPanel //clockcanvas implements TimerListener1{static int seconds = 0;private String city;private GregorianCalendar calendar;//构造函数public ClockCanvas(String c, String tz){city = c;calendar = new GregorianCalendar(TimeZone.getTimeZone(tz)); Timer1 t = new Timer1(1000, this);t.start();setSize(180, 180);}//绘制钟面public void paintComponent(Graphics g){super.paintComponent(g);g.drawOval(100, 5, 120, 120);g.drawOval(101, 6, 118, 118);//分离时间double hourAngle = 2 * Math.PI* (seconds - 3 * 60 * 60) / (12 * 60 * 60);double minuteAngle = 2 * Math.PI* (seconds - 15 * 60) / (60 * 60);double secondAngle = 2 * Math.PI* (seconds - 15) / 60;g.drawLine(160, 64, 160 + (int)(20* Math.cos(hourAngle)),64 + (int)(30 * Math.sin(hourAngle)));g.drawLine(160, 65, 160 + (int)(20* Math.cos(hourAngle)),65 + (int)(30 * Math.sin(hourAngle)));g.drawLine(160, 66, 160 + (int)(20* Math.cos(hourAngle)),66 + (int)(30 * Math.sin(hourAngle)));g.drawLine(160, 63, 160 + (int)(20* Math.cos(hourAngle)),63 + (int)(30 * Math.sin(hourAngle)));g.drawLine(160, 67, 160 + (int)(20* Math.cos(hourAngle)),67 + (int)(30 * Math.sin(hourAngle)));g.drawLine(160, 65, 160 + (int)(32* Math.cos(minuteAngle)),65 + (int)(40 * Math.sin(minuteAngle)));g.drawLine(160, 64, 160 + (int)(32* Math.cos(minuteAngle)),64 + (int)(40 * Math.sin(minuteAngle)));g.drawLine(160, 65, 160 + (int)(55* Math.cos(secondAngle)),65 + (int)(45 * Math.sin(secondAngle)));g.drawString(city, 130, 150);//*/}public void timeElapsed(Timer1 t){calendar.setTime(new Date());if(MyTimer1.count==1) {int a=1;seconds=MyTimer.intHour*60*60+MyTimer.intMinute*60+ MyTimer.intSecond; seconds+=a;//a为秒自加repaint();}else{ seconds = calendar.get(Calendar.HOUR) * 60 * 60+ calendar.get(Calendar.MINUTE) * 60+ calendar.get(Calendar.SECOND);repaint();}}}//定义时钟类class MyTimerimplements TimerListener{//定义时钟类的属性static int intHour,intMinute,intSecond;//构造函数public MyTimer(){setCurrentTimeAsSystemTime();Timer t = new Timer(1000, this); //实例Timer类,里面有run 方法t.start();}//显示当前时间public void displayCurrentTime(){JOptionPane.showMessageDialog(null,intHour+":"+intMinute+":"+intSecond);}//设定当前时间public void setCurrentTime(){//从对话框输入时,分秒String strTemp=JOptionPane.showInputDialog(null,"请输入当前小时(24小时制):"); int iHour=Integer.parseInt(strTemp);strTemp=JOptionPane.showInputDialog(null,"请输入当前分:");int iMinute=Integer.parseInt(strTemp);strTemp=JOptionPane.showInputDialog(null,"请输入当前秒:");int iSecond=Integer.parseInt(strTemp);//设定当前时间为对话框输入的时间if(iHour>=0&&iHour<24)intHour=iHour;else intHour=0;if(iMinute>=0&&iMinute<60)intMinute=iMinute;else intMinute=0;if(iSecond>=0&&iSecond<60)intSecond=iSecond;MyTimer1.count++;// ClockCanvas.seconds=iHour*60*60+iMinute*60+iSecond;}//设定当前时间为系统时间,构造函数调用public void setCurrentTimeAsSystemTime(){//定义Date类的一个对象,用来获取系统时间Date timeCurrent=new Date();//将系统的时,分秒设定为当前时间intHour=timeCurrent.getHours(); intMinute=timeCurrent.getMinutes(); intSecond=timeCurrent.getSeconds(); } //走时public void timeElapsed(Timer t){//系统走时intSecond++;if (intSecond==60){intMinute++;intSecond=0;}if (intMinute==60){intHour++;intMinute=0;}if (intHour==24){intHour=0;}}}interface TimerListener //接口了{void timeElapsed(Timer t);}class Timer extends Thread //类啊{private TimerListener target;private int interval;public Timer(int i, TimerListener t){target = t;interval = i;setDaemon(true); //Thread 里面方法目的跟着老大走 } public void run(){ try{while (!interrupted()){sleep(interval);target.timeElapsed(this);}}catch(InterruptedException e) {}}}。

时钟代码

时钟代码

1package com.jp.lianxi3;2import java.awt.Color;3import java.awt.Graphics;4import java.util.Date;5import java.util.Timer;6import java.util.TimerTask;7import javax.swing.JFrame;8import javax.swing.JPanel;9public class DrawClock extends JPanel{10private int localX=150;11private int localY=150;12private int r=150;13public DrawClock(int r){14this.localX=this.localY=this.r=r;15 }16public DrawClock(){}17public void paintComponent(Graphics g){18super.paintComponent(g);19 g.translate(250, 250);20 drawO(g);21 drawHand(g);22 }23public void drawO(Graphics g){//画表盘24 g.drawOval(-localX, -localY, r*2, r*2);25int a=0;26for(int i=0;i<60;i++){27double x,y;28 x=Math.cos(Math.toRadians(a));29 y=Math.sin(Math.toRadians(a));30if(a%30==0)31 g.drawLine((int)(0.8*x*r), (int)(0.8*y*r), (int)(x*r), (int)(y*r));32else33 g.drawLine((int)(0.9*x*r), (int)(0.9*y*r), (int)(x*r), (int)(y*r));34 a+=6;35 }36 }37public void drawHand(Graphics g){//画表针38 Date date=new Date();39int hour,minute,second;40 hour=minute=second=90;41//确定各个针的角度42 hour-=date.getHours()*30;43 minute-=date.getMinutes()*6;44 second-=date.getSeconds()*6;4546 g.setColor(Color.RED);47double x,y;48 x=Math.cos(Math.toRadians(hour));49 y=Math.sin(Math.toRadians(hour));50 g.drawLine(0,0,(int)(0.5*r*x),-(int)(0.5*r*y));//画时针51 x=Math.cos(Math.toRadians(minute));52 y=Math.sin(Math.toRadians(minute));53 g.drawLine(0,0,(int)(0.6*r*x),-(int)(0.6*r*y));//分针54 x=Math.cos(Math.toRadians(second));55 y=Math.sin(Math.toRadians(second));56 g.drawLine(0,0,(int)(0.8*r*x),-(int)(0.8*r*y));//画秒针57g.drawString(date.getHours()+":"+date.getMinutes()+":"+date.getSeconds(), 20,10);58 }59public void go(){60 Timer t=new Timer();61 t.schedule(new MyTimerTask(), 0, 1000);//定义定时器每一秒刷一次62 }63class MyTimerTask extends TimerTask{64@Override65public void run() {66 repaint();67 }6869 }70public static void main(String[] args) {71 DrawClock dc=new DrawClock(150);72 JFrame f=new JFrame("时钟");73 f.add(dc);74 f.setSize(500,500);75 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);76 f.setLocationRelativeTo(null);77 f.setVisible(true);78 dc.go();79 }80}import java.awt.*;import java.applet.Applet;import java.util.Calendar;import java.text.SimpleDateFormat;import java.util.Date;public class ClockApplet extends Applet implements Runnable //Applet支持线程{private Thread athread; //线程private SimpleDateFormat sdateformat; //日期格式public void init(){this.setBackground(Color.white);this.athread = null;}public void paint(Graphics g){this.sdateformat = new SimpleDateFormat("hh时mm分ss秒");g.drawString(this.sdateformat.format(new Date()),25,131);Calendar rightnow = Calendar.getInstance();int second = rightnow.get(Calendar.SECOND);int minute = rightnow.get(Calendar.MINUTE);int hour = rightnow.get(Calendar.HOUR);//半径int R_H = 20,R_M = 4,R_S = 4;//时针的坐标//x ====(9-3)[0-6] (3-9)[6-0]//y ====(12-6)[0-6] (6-12)[6-0]int H_x ;int H_y;//xif(hour == 0){hour = 12;}if( hour >= 3 && hour <= 9 ){H_x = R_H*Math.abs(hour - 9);}else{if(hour > 9){H_x = R_H*Math.abs(hour - 9);}else{H_x = R_H*Math.abs(hour+3);}}//yif( hour >= 6 && hour <= 12 ){H_y = R_H*Math.abs(hour - 12); }else{H_y = R_H*hour;}//分针的坐标int M_x;int M_y;if(minute == 0){minute = 60;}if( minute >= 15 && minute <= 45 ){M_x = R_M*Math.abs(minute - 45);}else{if(minute > 45){M_x = R_M*Math.abs(minute - 45);}else{M_x = R_M*Math.abs(minute+15);}}//yif( minute >= 30 && minute < 60 ){M_y = R_M*Math.abs(minute - 60);}else{M_y = R_M*minute;}//秒针的坐标int S_x;int S_y;if(second == 0){second = 60;}if( second >= 15 && second <= 45 ){S_x = R_S*Math.abs(second - 45);}else{if(second > 45){S_x = R_S*Math.abs(second - 45);}else{S_x = R_S*Math.abs(second+15);}}//yif( second >= 30 && second <= 60 ){S_y = R_S*Math.abs(second - 60);}else{S_y = R_S*second;}// g.drawString(String.valueOf(second),25,50); // g.drawString(String.valueOf(minute),25,60); // g.drawString(String.valueOf(hour),25,70);// g.drawString(String.valueOf(H_x),25,80);// g.drawString(String.valueOf(H_y),25,90); g.drawOval(0,0,120,120);//距离相差10像素g.setColor(Color.darkGray);g.drawString("9",5,65);g.drawString("3",110,65);g.drawString("12",55,15);g.drawString("6",55,115);g.drawString("1",80,20);g.drawString("2",100,40);g.drawString("4",100,90);g.drawString("5",80,110);g.drawString("7",30,110);g.drawString("8",10,90);g.drawString("10",10,40);g.drawString("11",30,20);g.setColor(Color.red);g.drawLine(60,60,H_x,H_y);//前一个点表示起点,另一个表示终点g.setColor(Color.blue);g.drawLine(60,60,M_x,M_y);g.setColor(Color.yellow);g.drawLine(60,60,S_x,S_y);}public void start(){if(athread == null){athread = new Thread(this);athread.start();}}public void stop(){if(athread != null){athread.interrupt();athread = null;}}public void run(){while(athread != null){repaint();try{athread.sleep(1000);}catch(InterruptedException e){}}}}import java.awt.*;import java.applet.*;import java.util.Date;import java.text.*;public class Clockpanel extends Applet implements Runnable {Date timenow;Clock myClock;Thread clockthread = null;//初始化Appletpublic void init(){setBackground(Color.white);}//启动线程public void start(){if(clockthread == null){clockthread = new Thread(this,"clockthread"); clockthread.start();}}//终止线程public void stop(){clockthread.stop();clockthread = null;}//线程体public void run(){Thread current = Thread.currentThread();while(clockthread == current){try{Thread.sleep(1000);//刷新间隔为1000毫秒}catch(InterruptedException e){}repaint();}}public void paint(Graphics g){timenow = new Date();myClock = new Clock(timenow.getHours(),timenow.getMinutes(),timenow.getSeconds());//条形时钟面板g.drawString(timenow.toString(),25,400);SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss a"); String msg = df.format(timenow);g.clearRect(11,9,199,13);g.drawRect(10,8,200,14);g.drawString(msg,20,20);//圆形时钟面板myClock.show(g,100,200,100);}}class Clock{int hour,minute,second;Clock(int hrs, int min, int sec)//取时间{hour = hrs%12;minute = min;second = sec;}void show(Graphics g,int cx,int cy,int rad)//显示圆形时钟{int hrs_len = (int)(rad*0.5),min_len = (int)(rad*0.6),sec_len = (int)(rad*0.9); double theta;int i;//画时钟面板g.drawOval(cx-rad,cy-rad,rad*2,rad*2);for(i=1;i<=12;i++){theta = (double)(i)/12*2.0*Math.PI;int tx = (int)(cx + sec_len*Math.sin(theta));int ty = (int)(cy - sec_len*Math.cos(theta));g.drawString(""+i,tx,ty);}//画时、分、秒针theta = (double)(hour*60*60 + minute*60 + second)/(12*3600.0)*2.0*Math.PI; drawNiddle(g,Color.blue,cx,cy,hrs_len,theta);theta = (double)(minute*60 + second)/3600.0*2.0*Math.PI;drawNiddle(g,Color.red,cx,cy,min_len,theta);theta = (double)(second)/60.0*2.0*Math.PI;drawNiddle(g,Color.green,cx,cy,sec_len,theta);}//表针函数private void drawNiddle(Graphics g,Color c,int x,int y, int len, double theta) {int ex = (int)(x + len*Math.sin(theta));int ey = (int)(y - len*Math.cos(theta));g.setColor(c);g.drawLine(x,y,ex,ey);}}/********************************************import java.util.*;import java.awt.*;import java.util.*;import javax.swing.*;import java.awt.*;import java.applet.*;import java.awt.event.*;import java.io.*;import javax.swing.*;class Paintclock extends JPanel implements Runnable { //private JButton Setalarmclock,offalarmclock;//private JButton b2;//private JButton b3;private Image backgroundImage;public int alarmhour;public int alarmminute;public int alarmsecond;MyClock mc = new MyClock();Set st = new Set();public Thread thread = null;public int hour;public int minute;public int second;public int year;public int month;public int day;public boolean Isclock = false;//Image clockimage;int clockX;int clockY;int x = 128;int y = 128;public String[] Weekdays = new String[] { "星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六" };Image off1;Graphics offG;public Paintclock() {backgroundImage= new ImageIcon("../hgfhg/chahua1.jpg").getImage();/*Setalarmclock = new JButton("设置闹钟");// 设置this.setLayout(null);this.add(Setalarmclock);Setalarmclock.setBounds(75, 250, 100, 25);Setalarmclock.setBorder(null);Setalarmclock.setVisible(true);Setalarmclock.setOpaque(true);*///this.setBounds(300, 200, 10,; 300);//this.setVisible(true);} //关闭闹钟按钮事件public void offalarmclockactionPerformed(ActionEvent e) {Isclock =false;MyClock mc = new MyClock();mc.Onalarm();}//设置时间按钮事件/*Setalarmclock.addActionListener(newjava.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {SetalarmclockActionPerformed(evt);}});*///按钮事件public void SetalarmclockActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:Isclock = true;/** ***************************************************** 设置闹铃时间界面**** ************************************************* */JLabel T;final JTextField sethour;final JTextField setminute;final JTextField setsecond;JButton setyes,setno;final JFrame Setclock = new JFrame();// JButton ce = new JButton("hjgjhgj");//ce.setBounds(30, 60, 60, 60);// ce.setVisible(true);//ce.setBorder(null);//Setclock.add(ce);Setclock.setTitle("设置闹钟");Setclock.setVisible(true);Setclock.setSize(200, 200);Setclock.setLocation(600, 400);Setclock.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);Setclock.setResizable(true);//Paintsetclock Setpaint = new Paintsetclock();//Setclock.add(Setpaint);T= new JLabel("请设置时间:");T.setBounds(10, 20, 100, 30);T.setBorder(null);T.setEnabled(true);//T.setVisible(true);Setclock.setLayout(null);Setclock.add(T);//时间设置sethour = new JTextField("00");setminute = new JTextField("00");setsecond = new JTextField(" : ");sethour.setBounds(50+10,50,20,20);setminute.setBounds(80+10, 50, 20, 20);setsecond.setBounds(68+10, 50, 20, 20);sethour.setVisible(true);setminute.setVisible(true);setsecond.setVisible(true);setsecond.setEditable(false);Setclock.add(sethour);Setclock.add(setminute);Setclock.add(setsecond);//按钮setyes = new JButton("确定");setyes.setBounds(30, 100,50, 30);setyes.setBorder(null);setyes.setVisible(true);setno = new JButton("取消");setno.setBounds(100, 100,50, 30);setno.setBorder(null);setno.setVisible(true);Setclock.add(setno);Setclock.add(setyes);//按钮事件setyes.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Isclock =true;alarmhour= Integer.valueOf(sethour.getText());alarmminute= Integer.valueOf(setminute.getText());// alarmsecond = Integer.valueOf(setsecond.getText());Paintclock pc = new Paintclock();pc.show();Setclock.dispose();MyClock mc = new MyClock();mc.Offalarm();// pc.Setalarmclock.setVisible(false);//隐藏设置时间按钮// pc.offalarmclock.setVisible(true);//显示关闭按钮System.out.println("闹钟时间"+alarmhour+":"+alarmminute);}});/* */setno.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Isclock =false;Setclock.dispose();}});}//双数保证// 线程启动public void start() {if (thread == null) {//show();thread = new Thread(this);thread.start();}}public void run() {while (thread != null) {//if(mc.alarmhour == hour|| mc.alarmminute == minutes||mc.alarmsecond==second)break;repaint();if(Isclock ){if(alarmhour >9&&alarmminute <= 9)mc.alarmtimeon.setText("(开) 闹钟:"+ alarmhour+" : "+'0'+alarmminute);else if(alarmhour <=9&&alarmminute > 9)mc.alarmtimeon.setText("(开) 闹钟:"+'0'+ alarmhour+" : "+alarmminute);else if(alarmhour <=9&&alarmminute <= 9)mc.alarmtimeon.setText("(开) 闹钟:"+'0'+ alarmhour+" : "+'0'+alarmminute);elsemc.alarmtimeon.setText("(开) 闹钟:"+ alarmhour+" : "+alarmminute);/*JTextField alarmtimeoff = new JTextField("(开) 闹钟:"+ "-"+" : "+"-");alarmtimeoff.setVisible(true);alarmtimeoff.setBounds(80, 220,200, 30);alarmtimeoff.setBorder(null);this.add(alarmtimeoff);*/if(alarmhour== this.hour&&alarmminute==this.minute&& this.second == 0){/** ************************************************************** 时间到弹出界面****** ***********************************************************/final JFrame alarmjf = new JFrame("闹钟");JLabel message = new JLabel("时间到!是时候展现真正的技术了!");JButton Myes = new JButton("知道了");JButton Mno = new JButton("关闭");//message.setVisible(true);//message.setEditable(false);Myes.setVisible(true);Mno.setVisible(true);alarmjf.setVisible(true);Myes.setLayout(null);Mno.setLayout(null);alarmjf.setLayout(null);message.setBounds(50, 10, 250, 20);Myes.setBounds(40, 40, 80, 30);Mno.setBounds(200,40,80,30 );alarmjf.setLocation(600, 300);alarmjf.setSize(320, 100);alarmjf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);alarmjf.setResizable(false);alarmjf.add(message);alarmjf.add(Myes);alarmjf.add(Mno);Myes.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Isclock =false;alarmjf.dispose();}});Mno.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Isclock =false;alarmjf.dispose();}});//JOptionPane.showMessageDialog(null, "闹钟时间已到", "闹钟",RMATION_MESSAGE);Isclock =false;}}else {}try {Thread.sleep(1000);} catch (Exception e) {}}}//绘图public void paint(Graphics g1) {super.paint(g1);Graphics2D g = (Graphics2D) g1;g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);g.setColor(Color.DARK_GRAY);// 绘制表盘int radius = 70;g.setFont(new Font("Curier", 10, 15));g.drawString("12", x - 8, y - 74);g.drawString("3", x + radius + 4, y + 6);g.drawString("6", x - 3, y + radius + 16);g.drawString("9", x - radius - 12, y + 6);int Sintemp = (int) (radius * Math.sin(Math.PI / 6)) - 2;int Costemp = (int) (radius * Math.cos(Math.PI / 6)) - 2;g.drawString("1", x + Sintemp - 1, y - Costemp - 6);g.drawString("2", x + Costemp + 4, y - Sintemp - 2);g.drawString("4", x + Costemp + 4, y + Sintemp + 12);g.drawString("5", x + Sintemp, y + Costemp + 20);g.drawString("7", x - Sintemp - 10, y + Costemp + 20);g.drawString("8", x - Costemp - 14, y + Sintemp + 12);g.drawString("10", x - Costemp - 20, y - Sintemp - 2);g.drawString("11", x - Sintemp - 14, y - Costemp - 6);g.setColor(Color.RED);g.fillOval(x - 4, y - 4, 8, 8);for (int i = 0; i < 60; i++) {clockX = (int) (70 * Math.sin(Math.PI / 30 * i)) + x;clockY = (int) (y - 70 * Math.cos(Math.PI / 30 * i));if (i % 5 == 0) {g.setColor(Color.black);g.fillOval(clockX - 3, clockY - 3, 6, 6);} else {g.setColor(Color.cyan);g.fillOval(clockX - 2, clockY - 2, 4, 4);}}Calendar calCurrent = Calendar.getInstance();// 获取当前时间int weekday = calCurrent.get(Calendar.DAY_OF_WEEK);day = calCurrent.get(Calendar.DATE);month = calCurrent.get(Calendar.MONTH) + 1;year = calCurrent.get(Calendar.YEAR);hour = calCurrent.get(Calendar.HOUR_OF_DAY);minute = calCurrent.get(Calendar.MINUTE);second = calCurrent.get(Calendar.SECOND);int hourX = (int) (Math.sin(Math.PI / 6.0* (hour % 12 + (float) minute / 60)) * 35)+ x;int hourY = y- (int) (Math.cos(Math.PI / 6.0* (hour % 12 + (float) minute / 60)) * 35);int secondX = (int) (Math.sin(Math.PI / 30.0 * second) * 70)+ x;int secondY = y - (int) (Math.cos(Math.PI / 30.0 * second) * 70);int minutesX = (int) (Math.sin(Math.PI / 30.0 * minute) * 55)+ x;int minutesY = y - (int) (Math.cos(Math.PI / 30.0 * minute) *55);g.setColor(Color.gray);g.setFont(getFont());if( month<=9 & day >9)g.drawString("日期:" + year + "-" +'0'+ month + "-" + day + " "+ Weekdays[weekday - 1], 60, 15);else if( month>9 && day <=9)g.drawString("日期:" + year + "-" + month + "-"+'0' + day+ " "+ Weekdays[weekday - 1], 60, 15);if(hour>9&& minute>9 & second >9)g.drawString("时间: "+ hour+ ":"+ minute+ ":"+ second, 60,30);else if(hour<=9&& minute>9 & second >9)g.drawString("时间: " +'0'+ hour + ":" + minute + ":" + second, 60, 30);else if(hour>9&& minute<=9 & second >9)g.drawString("时间: " + hour + ":" +'0'+ minute + ":" + second, 60, 30);else if(hour>9&& minute>9 & second <=9)g.drawString("时间: " + hour + ":" + minute + ":" +'0'+ second, 60, 30);// g.setStroke(new//BasicStroke(3.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));// 秒针g.setColor(Color.green);g.drawLine(x, y, secondX, secondY);// 时针g.setStroke(new BasicStroke(3.0f, BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));g.setColor(Color.red);g.drawLine(x, y, hourX, hourY);// 分针g.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND));g.setColor(Color.blue);g.drawLine(x, y, minutesX, minutesY);}}//public class MyClock {public static JButton Setalarmclock,offalarmclock;public static JTextField alarmtimeon;public static Paintclock panel = new Paintclock();protected void Onalarm(){Setalarmclock.setVisible(true);offalarmclock.setVisible(false);}protected void Offalarm(){Setalarmclock.setVisible(false);offalarmclock.setVisible(true);}public static void main(String args[]) {/******************************************************************* * 初始化时钟界面***** *************************************************************** * *////Setalarmclock.setOpaque(true);JFrame clock = new JFrame();clock.add(alarmtimeon);clock.add(Setalarmclock);clock.add(offalarmclock);clock.setTitle("钟表");clock.add(panel);panel.start();clock.setVisible(true);clock.setSize(270, 350);clock.setLocation(500, 250);clock.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);clock.setResizable(true);}public MyClock(){Setalarmclock = new JButton("设置闹钟");// 设置Setalarmclock.setBounds(75, 250, 100, 25);//Setalarmclock.setBorder(null);//Setalarmclock.setVisible(true);offalarmclock = new JButton("关闭闹钟");offalarmclock.setBounds(75, 250, 100, 25);offalarmclock.setBorder(null);//offalarmclock.setVisible(false);alarmtimeon = new JTextField("(关) 闹钟:"+ "-"+" : "+"-");alarmtimeon.setVisible(true);alarmtimeon.setBounds(80, 220,200, 30);alarmtimeon.setOpaque(false);alarmtimeon.setLayout(null);alarmtimeon.setEditable(false);alarmtimeon.setBorder(null);//按钮事件Setalarmclock.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {panel.SetalarmclockActionPerformed(e);}});offalarmclock.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {panel.offalarmclockactionPerformed(e);}});}}。

JavaFX实现简易时钟效果(一)

JavaFX实现简易时钟效果(一)

JavaFX实现简易时钟效果(⼀)本⽂实例为⼤家分享了JavaFX实现简易时钟效果的具体代码,供⼤家参考,具体内容如下效果图⽤当前时间创建时钟,绘制表盘。

钟表是静⽌的。

让指针动起来,请参照:主函数⽂件 ShowClock:package primier;import javafx.application.Application;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.Scene;import javafx.stage.Stage;import javafx.scene.paint.Color;import yout.*;import javafx.scene.control.*;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import javafx.scene.shape.Line;public class ShowClock extends Application {@Override //Override the start method in the Application classpublic void start(Stage primaryStage) {// 创建时钟⾯板ClockPane clock = new ClockPane();// 当前时间整理为字符串String timeString = clock.getHour() + ":" + clock.getMinute()+ ":" + clock.getSecond();Label lbCurrentTime = new Label(timeString);BorderPane pane = new BorderPane();pane.setCenter(clock);pane.setBottom(lbCurrentTime);// 将时钟字符串设为靠上居中BorderPane.setAlignment(lbCurrentTime, Pos.TOP_CENTER);Scene scene = new Scene(pane, 250,250);primaryStage.setTitle("Display Clock");primaryStage.setScene(scene);primaryStage.show();}public static void main (String[] args) {unch(args);}}ClockPane 类package primier;import java.util.Calendar;import java.util.GregorianCalendar;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;public class ClockPane extends Pane {private int hour;private int minute;private int second;// 时钟⾯板的宽度和⾼度private double w = 250, h = 250;/** ⽤当前时间创建时钟 */public ClockPane() {setCurrentTime();}/** Return hour */public int getHour() { return hour; }/** Return minute */public int getMinute() { return minute; }/** Return second */public int getSecond() { return second; }/** Set the current time for the clock */public void setCurrentTime() {// ⽤当前时间创建Calendar类Calendar calendar = new GregorianCalendar();this.hour = calendar.get(Calendar.HOUR_OF_DAY);this.minute = calendar.get(Calendar.MINUTE);this.second = calendar.get(Calendar.SECOND);paintClock();}/** 绘制时钟 */protected void paintClock() {double clockRadius = Math.min(w,h)*0.4; // 时钟半径// 时钟中⼼x, y坐标double centerX = w/2;double centerY = h/2;// 绘制钟表Circle circle = new Circle(centerX, centerY, clockRadius);circle.setFill(Color.WHITE); // 填充颜⾊circle.setStroke(Color.BLACK); // 笔画颜⾊Text t1 = new Text(centerX-5, centerY-clockRadius+12,"12");Text t2 = new Text(centerX-clockRadius+3, centerY +5, "9");Text t3 = new Text(centerX+clockRadius-10, centerY+3, "3");Text t4 = new Text(centerX-3, centerY+clockRadius-3,"6");// 秒针double sLength = clockRadius * 0.8;double secondX = centerX + sLength * Math.sin(second * (2 * Math.PI / 60)); double secondY = centerY - sLength * Math.cos(second * (2 * Math.PI / 60)); Line sLine = new Line(centerX, centerY, secondX, secondY);sLine.setStroke(Color.GRAY);// 分针double mLength = clockRadius * 0.65;double minuteX = centerX + mLength * Math.sin(minute * (2 * Math.PI / 60)); double minuteY = centerY - mLength * Math.cos(minute * (2 * Math.PI / 60)); Line mLine = new Line(centerX, centerY, minuteX, minuteY);mLine.setStroke(Color.BLUE);// 时针double hLength = clockRadius * 0.5;double hourX = centerX + hLength *Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));double hourY = centerY - hLength *Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));Line hLine = new Line(centerX, centerY, hourX, hourY);sLine.setStroke(Color.GREEN);// 将之前的结点清空,绘制新创建的结点getChildren().clear();getChildren().addAll(circle, t1, t2, t3, t4, sLine, mLine, hLine);}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Java数字时钟(简单的桌面应用)

Java数字时钟(简单的桌面应用)

import java.util.*;/*****该程序是一个简单的数字时钟,每变化一秒,颜色随机变色,可以系统托盘,最大的特点是可以和桌面形成一体,也就是容纳这个数字时钟的窗体可以看成是透明的***********/import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;public class app509 extends JFrame{static int i=-1,geli=-1;/*这一部分是系统托盘图标的文件路径,可以自己设置,只要路径正确即可,可以是gif,jpg,png格式*/static Image image=Toolkit.getDefaultToolkit().getImage("D:1\\3.png");static SystemTray systemTray=SystemTray.getSystemTray();static PopupMenu pop01=new PopupMenu();static MenuItem MI01=new MenuItem("打开主程序");static MenuItem MI02=new MenuItem("退出程序");static MenuItem MI03=new MenuItem("隐藏");static TrayIcon trayIcon=new TrayIcon(image,"这是程序图标",pop01);static JLabel beijingtu=new JLabel();static JLabel xingqi=new JLabel(" ",JLabel.CENTER);static JLabel jlabel02=new JLabel("年",JLabel.CENTER);static JLabel jlabel03=new JLabel("月",JLabel.CENTER);static JLabel jlabel04=new JLabel("日",JLabel.CENTER);static JLabel jlabel05=new JLabel("分",JLabel.CENTER);static JLabel jlabel10=new JLabel("时",JLabel.CENTER);static JLabel jlabel12=new JLabel("分",JLabel.CENTER);static JLabel jlabel13=new JLabel("秒",JLabel.CENTER);static JLabel jlabel06=new JLabel(" ",JLabel.CENTER);static JLabel jlabel07=new JLabel(" ",JLabel.CENTER);static JLabel jlabel08=new JLabel(" ",JLabel.CENTER);static JLabel jlabel09=new JLabel(" ",JLabel.CENTER);static JLabel jlabel11=new JLabel(" ",JLabel.CENTER);static JLabel jlabel=new JLabel(" ",JLabel.CENTER);static JLabel jbData[]={jlabel13,jlabel02,jlabel03,jlabel04,jlabel10,jlabel12};static JLabel jbData02[]={jlabel,jlabel07,jlabel08,jlabel09,jlabel11,jlabel06};static int mill=0;static int minute=0;static int hour=0;static int day=0;static int month=0;static int year=0;static int week;static int zuobiaoX,zuobiaoY;static JFrame JF01=new JFrame();static JDialog JF=new JDialog(JF01," ");static Robot robot;static BufferedImage image1;static Rectangle rec;static class mouseListener extends MouseAdapter{public void mouseClicked(MouseEvent a){if(a.getSource()==trayIcon){if(a.getClickCount()==2){i++;if(i%2==1){geli++;if(geli%2==1){image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));JF.setBounds(0,0,120,560);JF.setVisible(true);}}else{JF.setBounds(0,0,400,1);}}}}public void mouseEntered(MouseEvent a){if(a.getSource()==JF){image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));JF.setBounds(0,0,120,560);JF.setVisible(true);}}public void mouseExited(MouseEvent a){if(a.getSource()==JF){JF.setBounds(0,0,400,1);}}}public static void main(String args[]) throws Exception{trayIcon.addMouseListener(new mouseListener());rec=new Rectangle(0,0,(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight());try{robot=new Robot(); }catch(Exception b){}image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));MI01.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent a){Image1=robot.createScreenCapture(rec);beijingtu.setIcon(new ImageIcon(image1));JF.setBounds(0,0,120,560);JF.setVisible(true);}});MI03.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent a){JF.setBounds(0,0,400,1);}});MI02.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent a){System.exit(0);}});try{pop01.add(MI01);pop01.add(MI03);pop01.add(MI02);systemTray.add(trayIcon);trayIcon.setImageAutoSize(true);trayIcon.addMouseListener(new mouseListener());}catch(Exception a){} JF.setResizable(false) ;JF.addMouseListener(new mouseListener());JF.setUndecorated(true);beijingtu.setBounds(0,0,(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(),(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight());JF.setLayout(null);JF.setBounds(0,0,120,560);JF.setVisible(true);jlabel02.setBounds(91,94,24,25);jlabel06.setBounds(15,94,64,28);jlabel03.setBounds(91,175,24,25);jlabel07.setBounds(2,125,86,75);jlabel04.setBounds(91,261,24,25);jlabel08.setBounds(2,210,86,75);jlabel10.setBounds(91,346,24,25);jlabel09.setBounds(2,296,86,75);jlabel11.setBounds(2,382,86,75);jlabel12.setBounds(91,433,24,25);jlabel13.setBounds(91,520,24,25);jlabel.setBounds(2,468,86,75);xingqi.setBounds(2,30,118,62);JF.add(xingqi);xingqi.setHorizontalTextPosition(JLabel.CENTER);xingqi.setFont(new Font("微软雅黑",Font.BOLD,20));for(int i=0;i<jbData.length;i++){JF.add(jbData[i]);JF.add(jbData02[i]);}for(int i=0;i<jbData.length;i++){jbData[i].setFont(new Font("微软雅黑",Font.BOLD,15));jbData02[i].setFont(new Font("微软雅黑",Font.BOLD,30));}jlabel06.setFont(new Font("微软雅黑",Font.BOLD,15));for(int i=0;i<jbData.length;i++){jbData[i].setForeground(Color.blue);jbData02[i].setForeground(Color.red);}for(int i=0;i<jbData.length;i++){jbData[i].setHorizontalTextPosition(JLabel.CENTER);jbData02[i].setHorizontalTextPosition(JLabel.CENTER);}jlabel02.setHorizontalTextPosition(JLabel.RIGHT);JF.add(beijingtu);xiancheng xiancheng01=new xiancheng();xiancheng01.start();}}class xiancheng extends Thread{static GregorianCalendar date=new GregorianCalendar();app509 app=new app509();public void run(){for(int i=0;i<60;){try{sleep(1000);}catch(Exception a){}app.year=(date=new GregorianCalendar()).get(date.YEAR);app.jlabel06.setText(Integer.toString(app.year));app.month=((date=new GregorianCalendar()).get(date.MONTH)+1);app.jlabel07.setText(Integer.toString(app.month));app.day=(date=new GregorianCalendar()).get(date.DAY_OF_MONTH);app.jlabel08.setText(Integer.toString(app.day));app.week=(date=new GregorianCalendar()).get(date.DAY_OF_WEEK);app.hour=(date=new GregorianCalendar()).get(date.HOUR_OF_DAY);app.jlabel09.setText(Integer.toString(app.hour));app.minute=(date=new GregorianCalendar()).get(date.MINUTE);app.jlabel11.setText(Integer.toString(app.minute));l=(date=new GregorianCalendar()).get(date.SECOND);app.jlabel.setText(Integer.toString(l));if(app.jlabel.getText()!=" "){app.xingqi.setForeground(new Color((int)(255*Math.random()),(int)(255*Math.random()),(int)(255*Math.random())));for(int j=0;j<app.jbData.length;j++){app.jbData[j].setForeground(new Color((int)(255*Math.random()),(int)(255*Math.random()),(int)(255*Math.random())));app.jbData02[j].setForeground(new Color((int)(255*Math.random()),(int)(255*Math.random()),(int)(255*Math.random())));}} switch(app.week){case 1 : app.xingqi.setText("星期日");break;case 2 : app.xingqi.setText("星期一");break;case 3 : app.xingqi.setText("星期二");break;case 4 : app.xingqi.setText("星期三");break;case 5 : app.xingqi.setText("星期四");break;case 6 : app.xingqi.setText("星期五");break;case 7 : app.xingqi.setText("星期六");break;}System.gc();}}}/****复制以上代码进行编译即可*****/程序效果图:。

java图形时钟源代码

java图形时钟源代码

import java.awt.Container;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.MediaTracker;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JPanel;public class clock extends JFrame{/****/private static final long serialVersionUID = 1L;ImagePane imagePane[];String mypic;static Calendar now;static Float s;static Float m;static Float h;class s extends Thread{public void run(){while(true) {gettime();s = (float)(now.get(Calendar.SECOND) * 6);// 获得秒转换成度数,每秒转1次(1/60圆周)imagePane[0].ratoteImage(s*Math.PI/180);//秒针旋转try {Thread.sleep(1000);}catch (Exception ex) {}}}}class m extends Thread{public void run(){while(true) {gettime();m = (float)(now.get(Calendar.MINUTE) *6+Math.rint(now.get(Calendar.SECOND)/15)*1.5);// 获得分钟,每15秒转1次(1/24圆周) imagePane[1].ratoteImage(m*Math.PI/180);//分针旋转try {Thread.sleep(15000);}catch (Exception ex) {}}}}class h extends Thread{public void run(){while(true) {gettime();h = (float)((now.get(Calendar.HOUR_OF_DAY) - 12) * 30+Math.rint(now.get(Calendar.MINUTE)/2));// 获得小时,每12分转1格imagePane[2].ratoteImage(h*Math.PI/180);//时针旋转try {Thread.sleep(120000);}catch (Exception ex) {}}}}public static void gettime(){now = new GregorianCalendar();}public clock(){super("java时钟"); //调用父类构造函数imagePane=new ImagePane[4];Container container=getContentPane(); //得到窗口容器for(int i=0;i<4;i++){imagePane[i]=new ImagePane();imagePane[i].setOpaque(false);//设置透明imagePane[i].loadImage("image/"+(3-i)+".png"); //装载图片imagePane[i].setBounds(0, 0, 500, 600);//设置位置container.add(imagePane[i]); //增加组件到容器上}}public static void main(String[] args){clock hh=new clock();Thread ts=hh.new s();Thread tm=hh.new m();Thread th=hh.new h();gettime();//取得当前时间ts.start();tm.start();th.start();hh.setSize(520,620); //设置窗口尺寸hh.setVisible(true); //设置窗口可视hh.setResizable(false);//不可改变大小hh.setLocationRelativeTo(null);//居中hh.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}class ImagePane extends JPanel {/****/private static final long serialVersionUID = 1L;Image image;BufferedImage bufImage; //用于显示的缓冲区图像BufferedImage originalBufImage; //原始缓冲区图像Graphics2D bufImageG; //缓冲区图像的图形环境public void loadImage(String fileName) {image = this.getToolkit().getImage(fileName); //取得图像MediaTracker mt = new MediaTracker(this); //实例化媒体加载器mt.addImage(image, 0); //增加图像到加载器中try {mt.waitForAll(); //等待图片加载} catch (Exception ex) {ex.printStackTrace(); //输出出错信息}originalBufImage = newBufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //创建原始缓冲区图像bufImage = originalBufImage;bufImageG = bufImage.createGraphics(); //创建bufImage的图形环境bufImageG.drawImage(image, 0, 0, this); //传输源图像数据到缓冲区图像中repaint(); //重绘组件}//过滤图像public void ratoteImage(double angle) {if (bufImage == null)return; //如果bufImage为空则直接返回BufferedImage filteredBufImage =newBufferedImage(image.getWidth(this) ,image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //过滤后的图像AffineTransform transform = new AffineTransform(); //仿射变换对象transform.rotate(angle,image.getWidth(this)/2 ,image.getHeight(this)/2); //旋转图像AffineTransformOp imageOp = new AffineTransformOp(transform, null);//创建仿射变换操作对象imageOp.filter(originalBufImage, filteredBufImage);//过滤图像,目标图像在filteredBufImagebufImage = filteredBufImage; //让用于显示的缓冲区图像指向过滤后的图像repaint(); //重绘组件}//重载容器的paintComponent()方法public void paint(Graphics g) {super.paintComponent(g);if (bufImage != null) {Graphics2D g2 = (Graphics2D) g;g2.drawImage(bufImage,0,0,this); //绘制图片}}}}。

利用javafx编写一个时钟制作程序

利用javafx编写一个时钟制作程序

利⽤javafx编写⼀个时钟制作程序1.⾸先创建⼀个时钟类,⽤于编写时钟的各种特有属性package javaclock;/**** @author admin*/import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Scanner;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;import javafx.scene.control.Button;public class ClockPane extends Pane{private int hour;private int minute;private int second;private double w = 250,h = 250;//⽆参构造函数public ClockPane() {setCurrentTime();//调⽤⽅法}//有参构造函数public ClockPane(int hour,int minute,int second) {// Button btn = new Button("调整时间");//btn.setCurrentTime1();this.hour = hour;this.minute = minute;this.second = second;paintClock();//调⽤⽅法}//set与get⽅法public int getHour() {return hour;}public void setHour(int hour) {this.hour = hour;paintClock();}public int getMinute() {return minute;}public void setMinute(int minute) {this.minute = minute;paintClock();}public int getSecond() {return second;}public void setSecond(int second) {this.second = second;paintClock();}public double getW() {return w;}public void setW(double w) {this.w = w;paintClock();}public double getH() {return h;}public void setH(double h) {this.h = h;paintClock();}//修改当前时间public void setCurrentTime1(int hour,int minute,int second){this.hour = hour;this.minute = minute;this.second = second;paintClock();}//⽅法setCurrentTime()设置获取当前时间public void setCurrentTime() {Calendar calendar = new GregorianCalendar();//多态this.hour = calendar.get(Calendar.HOUR_OF_DAY);//获取⼩时this.minute = calendar.get(Calendar.MINUTE);//获取分钟this.second = calendar.get(Calendar.SECOND);//获取秒paintClock();}//创建paintClock()显⽰时间public void paintClock() {double clockRadius = Math.min(w, h)*0.8*0.5;//时钟半径double centerX = w/2;//圆⼼坐标double centerY = h/2;//创建时钟圆形Circle circle = new Circle(centerX,centerY,clockRadius);//创建圆circle.setFill(Color.WHITE);//圆形背景⾊为⽩⾊circle.setStroke(Color.BLACK);//圆形边缘⾊为⿊⾊//创建四个⽂本对象⽤于将12,9,6,3填⼊圆形中,注意不要压在圆形上⾯,需要计算坐标Text text1 = new Text(centerX-5,centerY-clockRadius+12,"12");Text text2 = new Text(centerX-clockRadius+3,centerY+5,"9");Text text3 = new Text(centerX+clockRadius-10,centerY+3,"3");Text text4 = new Text(centerX-3,centerY+clockRadius-3,"6");//分别绘制时针,分针,秒针//秒针double secLength = clockRadius*0.8;//秒针长度double secondX = centerX + secLength*Math.sin(second*(2*Math.PI/60));//因为⼀分钟有60秒,故求出当前秒针的⾓度,利⽤三⾓函数公式即可计算出秒针的端点x坐标double secondY = centerY - secLength*Math.cos(second*(2*Math.PI/60));//同理求出秒针的端点Y坐标Line secline = new Line(centerX,centerY,secondX,secondY);//创建线段对象实现秒针secline.setStroke(Color.RED);//将秒针定义为红⾊//分针double minLength = clockRadius*0.65;//分针长度double minuteX = centerX + minLength*Math.sin((minute )*(2*Math.PI/60));//因为⼀⼩时有六⼗分钟,利⽤分针的时间加上秒针的时间,利⽤三⾓函数对应的⾓度,即可计算出分针的端点x坐标double minuteY = centerY - minLength*Math.cos((minute )*(2*Math.PI/60));//同理求出分针的端点Y坐标Line minline = new Line(centerX,centerY,minuteX,minuteY);//创建线段对象实现秒针minline.setStroke(Color.GREEN);//将秒针定义为绿⾊//时针double houLength = clockRadius*0.5;//时针长度double hourX = centerX + houLength*Math.sin((hour%12 + minute/60.0 )*(2*Math.PI/12));//因为⼀天有⼗⼆⼩时,⼀⼩时有六⼗分钟,利⽤⼩时的时间加上分针的时间再加上秒针的时间,利⽤三⾓函数对应的⾓度,即可计算出分针的端点x坐标double hourY = centerY - houLength*Math.cos((hour%12 + minute/60.0 )*(2*Math.PI/12));//同理求出时针的端点Y坐标Line houline = new Line(centerX,centerY,hourX,hourY);//创建线段对象实现时针houline.setStroke(Color.BLUE);//将秒针定义为蓝⾊getChildren().clear();//每调⽤执⾏⼀次paintClock()⽅法就会清空⾯板getChildren().addAll(circle,text1,text2,text3,text4,secline,minline,houline);//将⼏个控件添加到⾯板中}}2、然后编写⼀个测试类,⽤于通过多线程创建呈现时钟的动画效果/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/package javaclock;import java.util.*;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.Scene;import javafx.scene.control.Button;import yout.StackPane;import javafx.stage.Stage;import yout.BorderPane;import javafx.animation.Timeline;import bel;import javafx.animation.KeyFrame;import javafx.geometry.Pos;import javafx.util.Duration;import yout.HBox;import yout.VBox;/**** @author admin*/public class JavaClock extends Application {//JavaClock jc = new JavaClock();ClockPane clock = new ClockPane();//BorderPane borderPane = new BorderPane();//@Overridepublic void start(Stage primaryStage) throws Exception {// TODO ⾃动⽣成的⽅法存根//绑定事件源EventHandler<ActionEvent> eventHandler = e ->{clock.setCurrentTime();String timeString = clock.getHour()+":"+clock.getMinute()+":"+clock.getSecond();Label labelCurrentTime = new Label(timeString);borderPane.setCenter(clock);borderPane.setBottom(labelCurrentTime);BorderPane.setAlignment(labelCurrentTime, Pos.TOP_CENTER);};Timeline animation = new Timeline(new KeyFrame(lis(1000),eventHandler));//设定时钟动画每1秒变⼀次,关键帧时间间隔animation.setCycleCount(Timeline.INDEFINITE);animation.play();//SceneScene scene = new Scene(borderPane,250,250);primaryStage.setTitle("JavaClock");primaryStage.setScene(scene);primaryStage.show();//展⽰场景borderPane.widthProperty().addListener(o->clock.setW(borderPane.getWidth()));//保持时间⾯板与场景同步borderPane.heightProperty().addListener(o->clock.setH(borderPane.getHeight()));//设置⼀个按钮,⽤于调整时间}/*** @param args the command line arguments */public static void main(String[] args) { launch(args);}}。

时钟java

时钟java
CanvasPalyBL 类:
CanvasPalyBL 类继承了Canvas组件,Canvas 组件表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写 paint 方法,以便在 canvas 上执行自定义图形。
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 时间类
* *
*/
public class Clock extends JFrame {
public ClockPaint(int x, int y, int r) {
this.x = x;
this.y = y;
this.r = r;
Calendar now = new GregorianCalendar();
y1 = (int) ((r - r / 2.5) * Math.cos(rad * m));
g.drawLine(x + r, y + r, x + r + x1, y + r - y1);
// 时针
g.setColor(Color.CYAN);
h += 6;
}
if (m >= 360) {
m = 0;
h += 6;
}
if (h >= 360) {

钟表代码-漂亮

钟表代码-漂亮
var F=(ns)?yers['nsFace'+i]:ieFace[i].style;
F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);
ie=(document.all);
Face=Face.split(' ');
n=Face.length;
a=size*10;
ymouse=0;
xmouse=0;
scrll=0;
props="<font face="+font+" size="+size+" color="+fCol+"><B>";
document.write('<div id="ieMinutes" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+mCol+';text-align:center;font-weight:bold">'+M[i]+'</div>');
document.write('<div id="ieHours" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+hCol+';text-align:center;font-weight:bold">'+H[i]+'</div>');

(完整word版)桌面时钟代码

(完整word版)桌面时钟代码

<HTML〉<HEAD〉〈TITLE〉动态数字时钟</TITLE〉〈SCRIPT language=”javascript">function digitalClock(){var today = new Date();digit_clock.innerText = today.toLocaleString();setTimeout(”digitalClock()", 1000 );}〈/SCRIPT〉〈LINK rel="styl esheet” type=”text/css" href="js。

css"〉〈/HEAD><BODY>〈H1 align="center" id=”digit_clock">〈/H1>〈SCRIPT language=”javascript"〉digitalClock();</SCRIPT><SCRIPT LANGUAGE="JavaScript”>var S = '。

..。

.';S = S.split('');//构成秒针的圆点var M = '*****'; M = M.split('');//构成分针的圆点var H = '****’;H = H.split('’);//构成时针的圆点var Ybase = 8; //构成秒、分和时针的圆点之间的间隔距离(Y轴)var Xbase = 8; //构成秒、分和时针的圆点之间的间隔距离(X轴)var dots = 12;//钟盘上的小时刻度数,通常为12,即1,2,3,.。

,12for (var i = 0; i 〈 dots; i++){//将小时刻度值(即1,2,3,。

javascr ipt 代码 背景时钟

javascr ipt 代码 背景时钟

背景时钟[好大的钟][推荐][共1步]====1、以下是这个效果的全部代码。

[最好从一个空页面开始]<html><head><TITLE>背景时钟</TITLE><script language=javaScript><!--//function clockon() {thistime= new Date()var hours=thistime.getHours()var minutes=thistime.getMinutes()var seconds=thistime.getSeconds()if (eval(hours) <10) {hours="0"+hours}if (eval(minutes) < 10) {minutes="0"+minutes}if (seconds < 10) {seconds="0"+seconds}thistime = hours+":"+minutes+":"+secondsif(document.all) {bgclocknoshade.innerHTML=thistimebgclockshade.innerHTML=thistime}if(yers) {document.bgclockshade.document.write('<div id="bgclockshade"style="position:absolute;visibility:visible;font-family:Verdana;color :FFAAAAA;font-size:120px;top:10px;left:152px">'+thistime+'</div>') document.bgclocknoshade.document.write('<div id="bgclocknoshade" style="position:absolute;visibility:visible;font-family:Verdana;color :DDDDDD;font-size:120px;top:10px;left:150px">'+thistime+'</div>') document.close()}var timer=setTimeout("clockon()",200)}//--></script><link rel="stylesheet" href="../style.css"></head><body onLoad="clockon()"><div id="bgclockshade"style="position:absolute;visibility:visible;font-family:Arial;color:F F8888;font-size:120px;top:102px;left:152px"></div><div id="bgclocknoshade"style="position:absolute;visibility:visible;font-family:Arial;color:D DDDDD;font-size:120px;top:100px;left:150px"></div><div id="mainbody" style="position:absolute; visibility:visible"></div></body></html>说明:时钟显示的位置需要你修正TOP,LEFT参数来确定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

漂亮时钟java完整代码这个时钟是用java写的,我觉得很完美,其中加载了声音和背景图片,我会把图片贴在这里,至于背景音乐可以根据自己的需要改动,程序运行后效果如下:今天把这个程序贴在这里,希望能帮到学习java的学弟学妹们。

源代码如下:import java.applet.Applet;import java.applet.AppletContext;import java.applet.AudioClip;import java.awt.*;import java.awt.event.*;import java.io.PrintStream;import java.util.Date;public class Clock extends Applet implements Runnable{Thread th1 = null;Image offScreenImage = null;Graphics offScreen = null;Image picture = null;int icount = 0;AudioClip song;private String n="look! My clock!";private String m="made by:";private String p="jessie with the number 200501109";public Clock(){}public void init(){try{offScreenImage = createImage(800, 600);offScreen = offScreenImage.getGraphics();}catch(Exception _ex){offScreen = null;}picture = getImage(getCodeBase(), "Clockscreen.jpg"); song=getAudioClip(getCodeBase(),"song.wav");song.loop();//加载声音}public void start(){th1 = new Thread(this);th1.start();}public void stop(){th1 = null ;}public static int vectorX(int i, int h, int j){int k = (i + h) % 360;int l = (int)((double)j* Math.cos((double)k * 2 * Math.PI / 360));return l;}public static int vectorY(int i, int h, int j){int k = (i + h) % 360;int l = (int)((double)j* Math.sin((double)k * 2 * Math.PI / 360)); return l;}public void run(){Thread.currentThread().setPriority(5);do{try{Thread.sleep(1000);}catch(InterruptedException _ex) { }repaint();}while(true);}public void paint(Graphics g) //防止闪屏{update(g);}public synchronized void update(Graphics g){if(offScreen != null){paintApplet(offScreen);g.drawImage(offScreenImage, 0, 0, this);return;}else{paintApplet(g);return;}}public void paintApplet(Graphics g)//具体画页面 {g.fillRect(0, 0, 677, 555);g.drawImage(picture, 0, 0, this);g.setColor(Color.pink); //设置字体颜色g.setFont(new Font("Arial",Font.PLAIN,24)); //设置文本字体和大小 g.drawString(n,20,50); //写文本“look!My clock!”g.drawString(m,200,510); //写文本"made by:"g.drawString(p,300,550);//写文本"jessie with the number 200501109"g.setColor(Color.pink);//画表盘g.drawOval(425,58,200,200);g.drawOval(415,48,220,220);for(int x=0;x<360;x+=6){if(x%5!=0){int u1=vectorX(x,270,100);int v1=vectorY(x,270,100);int u2=vectorX(x,270,110);int v2=vectorY(x,270,110);g.setColor(Color.pink);g.drawLine(525+u1,158+v1,525+u2,158+v2);}else{int u3=vectorX(x,270,90);int v3=vectorY(x,270,90);int u4=vectorX(x,270,110);int v4=vectorY(x,270,110);g.setColor(Color.pink);g.drawLine(525+u3,158+v3,525+u4,158+v4);}};String s1="12";String s2="3";String s3="6";String s4="9";g.setColor(Color.pink);g.drawString(s1,505,50);g.drawString(s2,635,165);g.drawString(s3,520,285);g.drawString(s4,400,165);g.fillOval(522,155,6,6);//表盘中心的圆点和圆圈g.setColor(Color.yellow);g.drawOval(518,149,14,14);Date date = new Date();int i = date.getMinutes();int j = i * 6;int kk = (date.getHours() ) % 24;g.setFont(new Font("Helvetica", 1, 28));//设置字体,显示数码时间;String s = new String();s = kk+ ":" + date.toString().substring(14, 19);g.setColor(Color.pink);g.drawString(s,465, 320);int k= (date.getHours() ) % 12;//开始获取时间经过计算画出时针、分针、秒针 int l = k * 30 + (i / 12) * 6;int a = vectorX(l,255,63);int b= vectorY(l,255,63);int c = vectorX(l,270,63);int d= vectorY(l,270,63);int x1[]={525,525+a/4,525+c};int y1[]={158,158+b/4,158+d};g.setColor(Color.pink);g.fillPolygon(x1,y1,3);int a1 = vectorX(j,255,73);int b1= vectorY(j,255,73);int c1= vectorX(j,270,73);int d1= vectorY(j,270,73);int x2[]={525,525+a1/4,525+c1};int y2[]={158,158+b1/4,158+d1};g.setColor(Color.pink);g.fillPolygon(x2,y2,3);int k1 = date.getSeconds() * 6;int a2 = vectorX(k1,255,85);int b2= vectorY(k1,255,85);int c2 = vectorX(k1,270,85);int d2= vectorY(k1,270,85);int x3[]={525,525+a2/4,525+c2};int y3[]={158,158+b2/4,158+d2};g.setColor(Color.pink);g.fillPolygon(x3,y3,3);}}然后还有html文件,内容如下:<HTML><BODY><APPLET CODE="Clock.class"HEIGHT=597 WIDTH=773></APPLET> </BODY></HTML>其中的图片如下。

相关文档
最新文档