Java实现迷你小闹钟源代码
JavaFX实现简易时钟效果
JavaFX实现简易时钟效果本⽂实例为⼤家分享了JavaFX实现简易时钟效果的具体代码,供⼤家参考,具体内容如下⾸先要在⾯板中显⽰⼀个时钟,我们可以设计⼀个ClockPane类来显⽰⼀个时钟。
最终效果:若要绘制⼀个时钟,需要绘制⼀个圆并为秒钟、分钟和⼩时绘制三个指针。
为了画⼀个指针,需要确定⼀条直线的两端:⼀端是时钟的中央,位于(centerX,centerY);另外⼀端位于(endX,endY),由⼀下公式来确定:endX=centerX+handLength×sin(θ) endY=centerY-handLength×cos(θ)(其中θ是指针和竖直⽅向12点的夹⾓)因为⼀分钟有60秒,所以第2个指针的⾓度是:second×(2π/60)分钟的位置由分钟和秒钟来决定。
包含秒数的确切分钟数是minu+second/60。
例如,如时间是3分30秒,那么总的分钟数就是3.5。
由于⼀⼩时有60分钟,因此分针的⾓度是: (minute+second/60)×(2π/12)由于⼀个圆被分为12个⼩时,所以时针的⾓度是: (hour+minute/60+second/(60×60))×(2π/12)为了简化计算,在计算分针和时针⾓度的时候,可以忽略秒针,因为它们数字太⼩,基本可以忽略。
因此,秒针、分针以及时针的端点可以如下计算:secondX = centerX + secondHandLength × sin(second × (2π/60))secondY = centerY - secondHandLength × cos(second × (2π/60))minuteX = centerX + minuteHandLength × sin(minute × (2π/60))minuteY = centerY - minuteHandLength × cos(minute × (2π/60))hourX = centerX + hourHandLength × sin((hour+minute/60) × (2π/12))hourX = centerX + hourHandLength × sin((hour+minute/60) × (2π/12))这样就得到了ClockPane类的实现程序:package pany;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;import java.util.Calendar;import java.util.GregorianCalendar;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) {this.hour=hour;this.minute=minute;this.second=second;paintClock();}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 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();}protected 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);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 scondX=centerX+sLength*Math.sin(second*(2*Math.PI/60)); double scondY=centerY-sLength*Math.cos(second*(2*Math.PI/60)); Line sline=new Line(centerX,centerY,scondX,scondY);sline.setStroke(Color.RED);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)*(2*Math.PI/12));Line hline=new Line(centerX,centerY,hourX,hourY);hline.setStroke(Color.GREEN);getChildren().clear();getChildren().addAll(circle,t1,t2,t3,t4,sline,mline,hline);}}对程序的简要解读:①Java API的GregorianCalendar类可以使⽤它的⽆参构造⽅法来商城⼀个具有当前时间的Calendar实例。
闹钟 源代码
99. P2 = 7;
100. Delay(2);
101.}
102./********************************************************************
143. s = 0;
144. break;
145. default:
146. hour = h;
40.void Time0_Init()
41.{
42. TMOD = 0x01;
43. IE = 0x82;
44. TH0 = 0x4c;
45. TL0 = 0x0 Delay(60);
160.}
161./********************************************************************
162.* 名称 : SetClock()
163.* 功能 : 设置闹钟时间
164.* 输入 : 无
17.sbit KEY1 = P3^2;
18.sbit KEY2 = P3^3;
19.sbit KEY3 = P3^4;
20.sbit BELL = P1^2;
21.
22./********************************************************************
165.* 输出 : 无
166.***********************************************************************/
JAVA课程设计 闹钟的设计与实现项目报告 附源代码
Java 设计报告书课程名称:JAVA语言程序设计设计题目:闹钟的设计与实现院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:许研2010 年12 月28 日目录一、题目描述 (1)二、设计思路 (1)三、运行结果 (5)四、源代码 (6)五、总结 (10)六、参考文献 (10)闹钟的设计与实现一、题目描述:结合JAVA图形界面的知识设计一个闹钟二、设计思路1、设计要求:编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。
2、算法基本描述:本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。
3、设计思想与内容1、画出类的UML简图Clock类:Clock类中的变量ri, shi, fen, miao, dangqian, guanji: JLabe lqueding, dakai: JButtonmusic, RI, SHI, FEN, MIAO: JTextFieldh = 0, f = 0, m = 0, r = 0 :intFo, foo: booleansoumd1: public AudioClipClock类中的函数public clock()public static void main(String agrs[])public void run()2、各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐3、主要模块算法描述(1)当前动态时间的显示的设计与实现。
利用JAVA实现一个时钟的小程序
JAVA课程项目报告项目题目:利用JAVA实现一个小时钟的程序专业班级:10软件工程利用JAVA实现一个时钟的小程序1.软件开发的需求分析在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。
使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。
面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。
此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
2.具体实现2.1设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。
Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
这将减少平常出错的50%。
而且,Java很小,整个解释器只需215K的RAM。
因此运用JAVA程序编写小时钟程序,实现简单显示时间的功能。
本次课程设计做的是Java简单小时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。
程序实现了小时钟的基本功能。
2.2设计方法在设计简单小时钟时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。
JAVA数字时钟源程序代码
import java.awt.*;import java.util.*;import javax.swing.*;//数字时钟public class ClockDemo extends JFrame implements Runnable{Thread clock;public ClockDemo(){super("数字时钟"); //调用父类构造函数setFont(new Font("Times New Roman",Font.BOLD,60)); //设置时钟的显示字体start(); //开始进程setSize(280,100); //设置窗口尺寸setVisible(true); //窗口可视this.setLocation(440,330);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}public void start(){ //开始进程if (clock==null){ //如果进程为空值clock=new Thread(this); //实例化进程clock.start(); //开始进程}}public void run(){ //运行进程while (clock!=null){repaint(); //调用paint方法重绘界面try{Thread.sleep(1000); //线程暂停一秒(1000毫秒)}catch (InterruptedException ex){ex.printStackTrace(); //输出出错信息}}}public void stop(){ //停止进程clock=null;}public void paint(Graphics g){ //重载组件的paint方法Graphics2D g2=(Graphics2D)g; //得到Graphics2D对象Calendar now=new GregorianCalendar(); //实例化日历对象String timeInfo=""; //输出信息int hour=now.get(Calendar.HOUR_OF_DAY); //得到小时数int minute=now.get(Calendar.MINUTE); //得到分数int second=now.get(Calendar.SECOND); //得到秒数if (hour<=9)timeInfo+="0"+hour+":"; //格式化输出elsetimeInfo+=hour+":";if (minute<=9)timeInfo+="0"+minute+":";elsetimeInfo+=minute+":";if (second<=9)timeInfo+="0"+second;elsetimeInfo+=second;g.setColor(Color.orange); //设置当前颜色为白色Dimension dim=getSize(); //得到窗口尺寸g.fillRect(0,0,dim.width,dim.height); //填充背景色为白色g.setColor(Color.black); //设置当前颜色为橙色g.drawString(timeInfo,20,80); //显示时间字符串}public static void main(String[] args){new ClockDemo();}}。
电子闹钟源程序
电子闹钟源程序模块一#include <reg51.h>extern void InitT0(void);extern void Init8255(void);extern unsigned char DispBuf[6];extern bit xTim,xKey;extern void KeyPro(void);extern unsigned char KeySts;extern void Delay(unsigned int ms) ;unsigned char sec,min,hour;Unsigned char code table[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86, 0x8E};sbit P1_1=P1^1;void TimUpdate(void){if(++sec==60){sec=0;if(++min==60){min=0;if(++hour==24){hour=0;}}}}void DisplayTim(){DispBuf[0]=table[sec % 10];DispBuf[1]=table[sec / 10];DispBuf[2]=table[min % 10];DispBuf[3]=table[min / 10];DispBuf[4]=table[hour % 10];DispBuf[5]=table[hour / 10];}void main(void){unsigned char i,x, xi ;x=1;for (i=0;i<6;i++) DispBuf[i]=0xFF;sec=0;min=0;hour=0;InitT0();Init8255();KeySts=0;while(1){if (xTim && (KeySts == 0)){xTim=0;TimUpdate();DisplayTim();// P1= ~x;// x<<=1;//if (x==0) x=1;}if (xKey){xKey =0;KeyPro();}if((sec==0)&&(min==0)){ xi=hour;if (xi==0){ xi=24; }while(xi--){ P1_1=1;DisplayTim();Delay(500);P1_1=0;DisplayTim();Delay(500);sec++;}}}}模块二#include <reg51.h>unsigned char xdata PA _at_ 0x8000; unsigned char xdata PB _at_ 0x8001; unsigned char xdata PC _at_ 0x8002; unsigned char xdata CtrlW _at_ 0x8003;unsigned char pLED;unsigned char DispBuf[6];unsigned char Digit[6]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}; unsigned char count;bit xTim,xKey;unsigned char KeyV al;void InitT0(void){pLED=0;xTim=0;count=0;TMOD=(TMOD&0xF0)|0x01;TH0=0xF1;TL0=0x00;TR0=1;ET0=1;EA=1;}void Delay(unsigned int ms){int i,j;for(i=0;i<ms;i++){for(j=0;j<114;j++){}}}void Init8255(void){Delay(1000);CtrlW=0x81;}void T0Srv(void) interrupt 1 using 1{TH0=0xF1;PA=0xFF;PB=Digit[pLED];PA=DispBuf[pLED];if(++pLED==6) pLED=0;count++;if((count&0x03)==0){KeyV al=PC & 0x0F;xKey=1;P1=KeyV al;}if(count==240){count=0;xTim=1;}}模块三#define SET 0x01#define LR 0x02#define UD 0x04#define OK 0x08#include <reg51.h>extern unsigned char sec,min,hour; extern unsigned char code table[16]; extern unsigned char DispBuf[6]; unsigned char EditSec,EditMin,EditHour; extern unsigned char KeyV al; unsigned char CurKey,LastKey; unsigned char KeySts;void DisplayEdit(){DispBuf[0]=table[EditSec%10]; DispBuf[1]=table[EditSec/10];DispBuf[2]=table[EditSec%10]; DispBuf[3]=table[EditSec/10];DispBuf[4]=table[EditSec%10]; DispBuf[5]=table[EditSec/10];DispBuf[6-KeySts]&=0x7F;}void Copy(){sec=EditSec;min=EditMin;hour=EditHour;}void KeyPro(void){unsigned char KeyPressed;LastKey=CurKey;CurKey=KeyV al;KeyPressed=CurKey^LastKey;if(KeyPressed==0) return;if(CurKey==0x0F) return;switch(KeySts){case 0:if(KeyPressed==SET){KeySts++;EditSec=sec;EditMin=min;EditHour=hour;}break;case 1:switch(KeyPressed){case LR: KeySts++;break;case UD: EditHour +=10;if(EditHour>=24) EditHour-=24; break;case OK: Copy();KeySts=0;break;}break;case 2:switch(KeyPressed){case LR: KeySts++;break;case UD: EditHour++;if(EditHour>=24) EditHour-=24; break;case OK: Copy();KeySts=0;break;}break;case 3:switch(KeyPressed){case LR: KeySts++;break;case UD:EditMin+=10;if(EditMin>=60) EditMin-=60; break;case OK:Copy();KeySts=0;break;}break;case 4:switch(KeyPressed){case LR: KeySts++;break;case UD: EditMin++;if(EditMin>=60) EditMin-=60; break;case OK: Copy();KeySts=0;break;}break;case 5:switch(KeyPressed){case LR: KeySts++;break;case UD: EditSec+=10;if(EditSec>=60) EditSec-=60; break;case OK: Copy();KeySts=0;break;}break;case 6:switch(KeyPressed){case LR:KeySts=1;break;case UD:EditSec++;if(EditSec>=60) EditSec-=60; break;case OK: Copy();KeySts=0;break;}break;default:KeySts=0;}DisplayEdit();}。
电子时钟工具的程序设计及代码示例
电子时钟工具的程序设计及代码示例为满足现代生活的需求,电子时钟成为人们生活中的常见工具。
除了具备实时显示时间的功能外,电子时钟还可以根据用户需求进行各种定制,如显示日期、倒计时、闹钟等功能。
本文将探讨电子时钟的程序设计方法,并提供一个简单的代码示例。
一、程序设计方法在进行电子时钟的程序设计前,我们需要确定以下几个关键因素:1. 使用的编程语言:根据实际情况选择合适的编程语言,如C++、Java、Python等。
2. GUI框架:确定使用什么图形界面框架,如Qt、Tkinter等。
3. 实时更新:确定时间的实时更新方式,可以利用计时器、循环等方式进行时间更新。
4. 用户交互:考虑用户是否需要与电子时钟进行交互,如设置闹钟、选择日期等。
二、代码示例以下是一个基于Python和Tkinter的电子时钟代码示例,代码注释中详细说明了每个函数的功能和实现方法:```pythonimport tkinter as tkfrom datetime import datetimedef update_time():# 获取当前时间current_time = datetime.now().strftime("%H:%M:%S")# 更新时间标签time_label.config(text=current_time)# 每隔1秒更新一次时间time_label.after(1000, update_time)# 创建窗口window = ()window.title("电子时钟")# 创建时间标签time_label = bel(window, font=("Arial", 100), bg="white") time_label.pack(pady=50)# 更新时间update_time()# 运行窗口主循环window.mainloop()```以上代码创建了一个简单的窗口,使用标签实时显示当前时间。
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课设有这样⼀个问题,⽐较感兴趣就做了⼀下功能介绍: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),表⽰在原来图像的基础上,再画图。
模拟时钟源代码
int xh, yh, xm, ym, xs, ys, s, m, h, xcenter, ycenter;
Date rightnow = enw Date(); //获取当前日期和时间
String today = rightnow.toLocaleString(); //时间对应的字符串
yh = (int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*30+ycenter);
g.setFont(new Font("TimesRoman", Font.PLAIN, 14));
g.setColor(Color.blue);
xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);
ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);
xh = (int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*30+xcenter);
repaint(); //调用paint()方法重画时钟
}
timer = null;
}
public void update(Graphics g)
{
paint(g); //重写该方法是为了消除抖动现象
public void init()
{
setBackground(Color.white); //设置Applet背景
}
public void paint(Graphics g) //显示数字和图形时钟
JAVA线程程序设计(小时钟)实验报告(附完整代码)
JAVA线程程序设计(小时钟)实验报告(附完整代码)一、课题内容和要求内容:设计和编写一个编写一个指针式时钟程序,应用线程实现时钟的走动。
要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。
二、设计思路分析class Clock:一个指针式时钟的主类class Layout: 添加窗口和时钟组件class ClockPaint:定义时钟组件三、概要设计 public class Clock extends JFrame {public static void main(String[] s);}class Layout extends JFrame {public Layout();}class ClockPaint extends JPanel implements Runnable {int x, y, r; int h, m, s; double rad = Math、PI /180; public ClockPaint(int x, int y, int r);public voidpaint(Graphics g);public void run();}时钟的绘制:运行时钟:四、详细设计 import java、awt、*;import javax、swing、*;import java、util、*;public class Clock extends JFrame {public static void main(String[] s){new Layout();}}class Layout extends JFrame {// 添加窗口和时钟组件public Layout(){ClockPaint cp = newClockPaint(20,20,70);add(cp);setBounds(260,120,200,200);s etResizable(false);this、setTitle("指针式时钟");this、setVisible(true);}}class ClockPaint extends JPanel implements Runnable {// 定义时钟组件int x, y, r;// 时钟的位置坐标和半径int h, m, s;// 小时,分钟,秒double rad = Math、PI /180;// 定义弧度public ClockPaint(int x, int y, int r){// 构造函数this、x = x;this、y = y;this、r =r;Calendar now = Calendar、getInstance();// 初始化日历对象s = now、get(Calendar、SECOND)*6;// 获得初始秒转换成度数m = now、get(Calendar、MINUTE)*6;// 获得初始分钟转换成度数h = (now、get(Calendar、HOUR_OF_DAY)2)* Math、sin(rad * d));y1 = (int)((r1, x + r14)* Math、sin(rad * d));y1 = (int)((r4, x + r6)* Math、sin(rad * d));y1 = (int)((r2)* Math、sin(rad * d));y2 = (int)((r y2, x + r + x1, y + r y1);g、setColor(Color、BLUE);// 按时间画分针x1 = (int)((0、6 * r)* Math、sin(rad * m));y1 = (int)((0、6 * r)* Math、cos(rad * m));g、drawLine(x + r, y + r, x + r + x1, y + r y1);g、setColor(Color、GREEN);// 显示时间Calendar now1 = Calendar、getInstance();g、drawString(now1、get(Calendar、HOUR_OF_DAY)+ ":"+ now1、get(Calendar、MINUTE)+ ":"+ now1、get(Calendar、SECOND), 0,10);}public void run(){// 运行时钟while (true){try {Thread、sleep(1000);// 中断一秒后重新运行} catch (Exception ex){System、out、println(ex);}s +=6;// 秒针走6度if(s >=360){// 秒针走完一分钟后重置s = 0;m +=6;if (m ==72 || m ==144 || m ==216 || m ==288){// 分针走完5分钟后重置h +=6;}if (m >=360){// 分针走完一小时后重置m = 0;h +=6;}if (h >=360){// 时针走完12小时后重置h = 0;}}this、repaint();// 重新绘制时钟}}}五、测试数据及其结果分析1时钟界面:2结果:输出正常。
利用JAVA实现一个时钟的小程序
JAVA课程项目报告项目题目:利用JAVA实现一个小时钟的程序专业班级:10软件工程利用JAVA实现一个时钟的小程序1.软件开发的需求分析在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。
使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。
面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。
此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
2.具体实现2.1设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。
Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。
这将减少平常出错的50%。
而且,Java很小,整个解释器只需215K的RAM。
因此运用JAVA程序编写小时钟程序,实现简单显示时间的功能。
本次课程设计做的是Java简单小时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。
程序实现了小时钟的基本功能。
2.2设计方法在设计简单小时钟时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。
Java闹钟程序
/** To change this template, choose Tools | Templates* and open the template in the editor.*/package javacourse;import java.applet.Applet;import java.applet.AudioClip;import java.awt.*;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.*;import java.awt.event.*;import java.io.File;import .URI;import .URL;import java.util.Calendar;import java.util.Date;public class JavaCourse {public static void main(String[] args) {new NaoZhong("迷你小闹钟");}}class NaoZhong extends JFrame implements ActionListener{JLabel labelHead,labelDate,labelTime;JPanel panelCenter,panelSouth,panelEast;PanelPaint panelCenterGraphics= new PanelPaint();;//创建用于作画的画面Timer time;JButton buttonSet,buttonStop;Calendar calendar;String hour,minute,second, year,month,day;static String hour2="00",minute2="00",second2="00";//用于设置闹钟的时候与当前时间进行比较File musicFile;URI uri;URL url;JRadioButton jrb1,jrb2;StringdrawNaoZhong="NaoZhong1.jpg",musicNaoZhong="qichuang1.wav";//用于设置闹铃和钟表的背景AudioClip clip;//这个是用来播放音频的NaoZhong(String s){//为闹钟设置了标题this.setTitle(s);labelHead =new JLabel("迷你小闹钟");labelHead.setHorizontalAlignment(JLabel.CENTER);labelHead.setFont(new Font("宋体",Font.BOLD,40));//为闹钟设置日期LabelDatelabelTime = new JLabel();labelDate = new JLabel();calendar = Calendar.getInstance();year = Integer.toString(calendar.get(Calendar.YEAR)) ;month = Integer.toString(calendar.get(Calendar.MONTH)+1);day= Integer.toString(calendar.get(Calendar.DATE));hour = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));minute = Integer.toString(calendar.get(Calendar.MINUTE));second = Integer.toString(calendar.get(Calendar.SECOND));labelDate.setHorizontalAlignment(JLabel.CENTER);labelDate = new JLabel(year+" 年"+month+" 月"+day+" 号");//为闹钟设置当前时间LabelTime,要进行判断否则时间的秒会出现个位数labelTime.setHorizontalAlignment(JLabel.CENTER);if(Integer.parseInt(second)<10){second = "0"+second;}if(Integer.parseInt(minute)<10){minute="0"+minute;}if(Integer.parseInt(hour)<10){hour="0"+hour;}labelTime = new JLabel(hour+":"+minute+":"+second);//组织中间的一个panelCenterJPanel jp = new JPanel();//用于装labelTime,和labelDatelabelDate.setBounds(10, 10, 200, 200);jp.add(labelDate);jp.add(labelTime);panelCenter = new JPanel();panelCenter.setLayout(new BorderLayout());panelCenter.add(jp,BorderLayout.NORTH);//在这里加入画画的图片panelCenter.add(panelCenterGraphics,BorderLayout.CENTER);//组织最后一个panelSouth组件panelSouth =new JPanel();buttonSet = new JButton("设置闹钟");buttonSet.addActionListener(new ButtonListener());buttonStop = new JButton("停止闹钟");buttonStop.addActionListener(new ButtonStopListener());panelSouth.add(buttonSet);panelSouth.add(buttonStop);//设置一些框架的基本情况this.setBounds(200, 200, 500, 500);this.add(labelHead,BorderLayout.NORTH);this.add(panelCenter,BorderLayout.CENTER);this.add(panelSouth,BorderLayout.SOUTH);this.setVisible(true);this.validate();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置每隔1秒钟刷新一次Timetime = new Timer(1000,this);time.start();//绘选择闹钟背景jrb1 = new JRadioButton("图片1");jrb2 = new JRadioButton("图片2");ButtonGroup bg = new ButtonGroup();bg.add(jrb1);bg.add(jrb2);jrb1.addItemListener(new PhotoListener());jrb2.addItemListener(new PhotoListener());panelEast = new JPanel(new GridLayout(3,1));panelEast.add(jrb1);panelEast.add(jrb2);this.add(panelEast,BorderLayout.EAST);}public void actionPerformed(ActionEvent e) {//把时间重新设计一次calendar = Calendar.getInstance();year = Integer.toString(calendar.get(Calendar.YEAR)) ;month = Integer.toString(calendar.get(Calendar.MONTH)+1);day= Integer.toString(calendar.get(Calendar.DATE));hour = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY));minute = Integer.toString(calendar.get(Calendar.MINUTE));second = Integer.toString(calendar.get(Calendar.SECOND));labelDate.setHorizontalAlignment(JLabel.CENTER);labelDate.setText(year+" 年"+month+" 月"+day+" 号");if(Integer.parseInt(second)<10){second = "0"+second;}if(Integer.parseInt(minute)<10){minute="0"+minute;}if(Integer.parseInt(hour)<10){hour="0"+hour;}labelTime.setText(hour+":"+minute+":"+second);//这里不能再新建一个对象了,如果和之前的代码一样时间则框架中的时间就是不变了//设置当当前时间与闹钟的时间相同时我们开启铃声.if(hour.equals(hour2)&&minute.equals(minute2)&&second.equals(second2)){musicFile = new File(musicNaoZhong);uri = musicFile.toURI();try{url = uri.toURL();}catch(Exception exp){System.out.println("wrong");}clip = Applet.newAudioClip(url);clip.play();}panelCenterGraphics.repaint();}//重新定义panel中的paint方法class PhotoListener implements ItemListener{public void itemStateChanged(ItemEvent e) {if(e.getSource() == jrb1){drawNaoZhong = "NaoZhong1.jpg";}else{drawNaoZhong = "NaoZhong2.jpg";}}}class PanelPaint extends JPanel{public void paint(Graphics g){try {g.drawImage(javax.imageio.ImageIO.read(newFile(drawNaoZhong)),100,10,this);} catch (IOException ex) {Logger.getLogger(NaoZhong.class.getName()).log(Level.SEVERE, null, ex);}int xh,yh,xm,ym,xs,ys;int xcenter,ycenter;xcenter=248;ycenter=161;xs=(int)(Math.cos((Integer.parseInt(second))*3.14f/30-3.14f/2)*80+xcenter);ys=(int)(Math.sin((Integer.parseInt(second))*3.14f/30-3.14f/2)*80+ycenter); //这个就是起点xm=(int)(Math.cos(Integer.parseInt(minute)*3.14f/30-3.14f/2)*60+xcenter);ym=(int)(Math.sin(Integer.parseInt(minute)*3.14f/30-3.14f/2)*60+ycenter);xh=(int)(Math.cos((Integer.parseInt(hour)*30+Integer.parseInt(hour)/2)*3.14f/180-3.1 4f/2)*30+xcenter);yh=(int)(Math.sin((Integer.parseInt(hour)*30+Integer.parseInt(hour)/2)*3.14f/180-3.1 4f/2)*30+ycenter);g.setColor(Color.orange);g.drawLine(xcenter,ycenter-1,xm,ym);g.drawLine(xcenter-1,ycenter,xm,ym);g.setColor(Color.green);g.drawLine(xcenter,ycenter,xs,ys);g.setColor(Color.blue);g.drawLine(xcenter,ycenter-1,xh,yh);g.drawLine(xcenter-1,ycenter,xh,yh);}}/* class TimeListener implements ActionListener{//用来定期更新数字时钟的值}*/class ButtonListener implements ActionListener{//用来设置闹钟的闹铃时间public void actionPerformed(ActionEvent e) {new SetNaoZhong();}}class SetNaoZhong extends JDialog implements ActionListener{JTextField txtHour,txtMinute,txtSecond;JLabel labelHour,labelMinute,labelSecond;JPanel panelNorth2,panelCenter2,panelSouth2;JButton buttonYes,buttonNo;JComboBox list;SetNaoZhong(){//配置一下设置对话框的基本信息this.setTitle("闹钟设置");this.setBounds(300, 300, 300, 200);this.setVisible(true);this.setLayout(new BorderLayout());//配置panelNorth用于设置时间的部分panelNorth2 = new JPanel();txtHour = new JTextField("00",5);txtMinute = new JTextField("00",5);txtSecond = new JTextField("00",5);labelHour = new JLabel("时");labelMinute = new JLabel("分");labelSecond = new JLabel("秒");panelNorth2.add(labelHour);panelNorth2.add(txtHour);panelNorth2.add(labelMinute);panelNorth2.add(txtMinute);panelNorth2.add(labelSecond);panelNorth2.add(txtSecond);JPanel panelNorth3 = new JPanel();panelNorth3.setLayout(new BorderLayout());panelNorth3.add(panelNorth2,BorderLayout.NORTH);this.add(panelNorth3,BorderLayout.NORTH);//设置按钮组panelCenterpanelCenter2 = new JPanel();buttonYes = new JButton("yes");buttonYes.addActionListener(this);buttonNo = new JButton("no");buttonNo.addActionListener(this);panelCenter2.add(buttonYes);panelCenter2.add(buttonNo);this.add(panelCenter2,BorderLayout.CENTER);//设置选择歌曲的选项list = new JComboBox();list.addItem("qichuang1.wav");list.addItem("qichuang2.wav");list.addItem("qichuang3.wav");panelNorth3.add(list,BorderLayout.SOUTH);}public void actionPerformed(ActionEvent e) {if(e.getSource()==buttonYes){hour2 = txtHour.getText();minute2 = txtMinute.getText();second2 = txtSecond.getText();if(Integer.parseInt(second2)<10&&second2.charAt(0)!='0'){second2 = "0"+second2;}if(Integer.parseInt(minute2)<10&&minute2.charAt(0)!= '0'){minute2="0"+minute2;}if(Integer.parseInt(hour2)<10&&hour2.charAt(0)!='0'){hour2="0"+hour2;}this.setVisible(false);}else{this.setVisible(false);}musicNaoZhong = (String)list.getSelectedItem();}}public class ButtonStopListener implements ActionListener{public void actionPerformed(ActionEvent e) {clip.stop();}}}。
漂亮时钟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.setColor(Color.white);g.fillRect(0, 0, 677, 555);g.drawImage(picture, 0, 0, this);g.setColor(Color.pink); //设置字体颜色g.setFont(newFont("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 thenumber 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.setColor(Color.pink);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 JFrame实现的简单时钟clock
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
@Override
public void run() {
// TODO Auto-generated method stub
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
clock c = new clock();
c.initJFrame();
date = new Dቤተ መጻሕፍቲ ባይዱte();
shi = String.format("%tH", date);
fen = String.format("%tM", date);
miao = String.format("%tS", date);
}
void initJFrame(){
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class clock extends JFrame implements Runnable{
text = new JTextField(); //实例化文本框
text.setEditable(false); //消除光标
Java实现的简单数字时钟功能示例
Java实现的简单数字时钟功能⽰例本⽂实例讲述了Java实现的简单数字时钟功能。
分享给⼤家供⼤家参考,具体如下:应⽤名称:Java数字时钟⽤到的知识:Java GUI编程,线程开发环境:win8+eclipse+jdk1.8功能说明:可以显⽰当前系统的年⽉⽇、星期以及准确时间,并实时更新显⽰。
效果图:源代码:import javax.swing.JFrame;import javax.swing.JPanel;import java.awt.BorderLayout;import javax.swing.JLabel;import java.awt.Font;import java.text.SimpleDateFormat;import java.util.Date;public class Time extends JFrame implements Runnable{/****/private static final long serialVersionUID = 1L;private JLabel date;private JLabel time;public Time() {//初始化图形界⾯this.setVisible(true);this.setTitle("数字时钟");this.setSize(282, 176);this.setLocation(200, 200);this.setResizable(true);JPanel panel = new JPanel();getContentPane().add(panel, BorderLayout.CENTER);panel.setLayout(null);//时间time = new JLabel();time.setBounds(31, 54, 196, 59);time.setFont(new Font("Arial", Font.PLAIN, 50));panel.add(time);//⽇期date = new JLabel();date.setFont(new Font("微软雅⿊", Font.PLAIN, 13));date.setBounds(47, 10, 180, 22);panel.add(date);}//⽤⼀个线程来更新时间public void run() {while(true){try{date.setText(new SimpleDateFormat("yyyy 年 MM ⽉ dd ⽇ EEEE").format(new Date()));time.setText(new SimpleDateFormat("HH:mm:ss").format(new Date()));}catch(Throwable t){t.printStackTrace();}}}public static void main(String[] args) {new Thread(new Time()).start();}}PS:这⾥再为⼤家推荐⼏款时间及⽇期相关⼯具供⼤家参考使⽤:更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。
Java实现时钟小程序
Java实现时钟⼩程序哎,好久没上博客园发东西了,上⼀次还是两个⽉前的五⼀写的⼀篇计算器博客,不过意外的是那个程序成了这学期的Java⼤作业,所以后来稍微改了⼀下那个程序就交了上去,这还是美滋滋。
然后五⽉中旬的时候写了⼀个2048⼩游戏,由于写完第⼆个版本第⼆天就⽣病了,休养了好⼏天才缓过来,最后嫌⿇烦就没发园⼦⾥了,直接挂Github上了。
然后⼜忙着准备期末,期末玩休息了5天⼜开始数据库课程设计,⽤Java写了⼀个⼩系统,花了⼀个星期左右,写了差不多3500⾏了。
然后写完就放学了,放学的⽇⼦就感觉⾃⼰开始懒散了,静不下⼼来写东西,每天睡觉,看⼀些⽆聊的视频。
前⼏天算是缓过神来,找回了脑⼦,于是⼜开始想着在放弃Java之前再多写⼀点东西,于是花了两个下午写了⼀个时钟,感觉看着还⾏。
-----------------------------------以下是正经话----------------------------------- 其实这个程序并不难,主要是⽤Java 2D画图,弄⼀个线程,每隔⼀秒,依照时针分针秒针各⾃的速度重新计算它们⾛过的⾓度(相对12点⽅向顺时针偏离的⾓度),利⽤这个⾓度算出它们各⾃端点的坐标,重绘⼀次表针,达到刷新的⽬的,最后时限⾛动的效果,思路很简单,清晰明了。
但是关键是这个画图呀,想着很容易,重写继承过来的JFrame⾥的paint函数就⾏,最后发现效果并不是期待的那样,⽽是⼀闪⼀闪的,于是去寻找原因,结果,尼玛,原来⽔这么深,⼀下⼦触到了知识盲区,什么repaint的实现细节,先调⽤update,再调⽤paint,update函数⼜是如何⼯作的,慢慢弄懂了它为什么会⼀闪⼀闪的原因,然后寻找解决办法,然后就看到了什么双缓冲原理,WTF!什么玩意呀,根本没听过,然后乖乖地去看那东西的实现原理,⼜看到有⼈建议不要去重写paint⽅法,说是会遇到诸多意想不到的问题,建议去重写paintComponent⽅法,可是书本上画图的例⼦都是重写paint⽅法呀,况且我也没听过paintComponent,⽆奈,⼜去看了⼀下paint的⼯作原理,原来它会调⽤paintComponent,最后放弃了⾃⼰实现双缓冲,乖乖改⽤了paintComponent。
用java实现的小时钟应用程序
//ÓÃjavaʵÏÖµÄСʱÖÓ³ÌÐò´úÂë/** Copyright (c) 2000 David Flanagan. All rights reserved.* This code is from the book Java Examples in a Nutshell, 2nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.* You may study, use, and modify it for any non-commercial purpose. * You may distribute it non-commercially as long as you retain this notice.* For a commercial use license, or to purchase the book (recommended), * visit /javaexamples2.*/import java.applet.*; // Don't forget this import statement! import java.awt.*; // Or this one for the graphics!import java.util.Date; // To obtain the current timeimport java.text.DateFormat; // For displaying the time/*** This applet displays the time, and updates it every second**/public class Test extends Applet implements Runnable {Label time; // A component to display the time inDateFormat timeFormat; // This object converts the time to a stringThread timer; // The thread that updates the timevolatile boolean running; // A flag used to stop the thread/*** The init method is called when the browser first starts the applet. * It sets up the Label component and obtains a DateFormat object **/public void init() {time = new Label();time.setFont(new Font("helvetica", Font.BOLD, 12));time.setAlignment(Label.CENTER);setLayout(new BorderLayout());add(time, BorderLayout.CENTER);timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);}/**Download by * This browser calls this method to tell the applet to start running.* Here, we create and start a thread that will update the time each * second. Note that we take care never to have more than one thread **/public void start() {running = true; // Set the flagif (timer == null) { // If we don't already have a thread timer = new Thread(this); // Then create onetimer.start(); // And start it running}}/*** This method implements Runnable. It is the body of the thread. Once* a second, it updates the text of the Label to display the current time**/public void run() {while(running) { // Loop until we're stopped// Get current time, convert to a String, and display in the Labeltime.setText(timeFormat.format(new Date()));// Now wait 1000 millisecondstry { Thread.sleep(1000); }catch (InterruptedException e) {}}// If the thread exits, set it to null so we can create a new one // if start() is called again.timer = null;}/*** The browser calls this method to tell the applet that it is not visible* and should not run. It sets a flag that tells the run() method to exit**/public void stop() { running = false; }/*** Returns information about the applet for display by the applet viewer**/public String getAppletInfo() {return "Clock applet Copyright (c) 2000 by David Flanagan"; }}。
java闹钟程序设计
j a v a闹钟程序设计------------------------------------------作者xxxx------------------------------------------日期xxxx《JAVA程序设计》课程设计报告班级软件1301班姓名徐畅学号13号电子邮件849286847@指导教师张暑军时间2014/2015学年第一学期第20周承德石油高等专科学校计算机与信息工程系二零一五年一月十二日目录一系统需求描述 (4)二设计思路 (4)三实现描述 (6)四常见问题及解决方法 (8)五总结 (8)一系统需求描述1.任务描述:我国现在在各个方面发展迅猛,民众的生活质量得到极大的提高。
与此同时,根据时代的要求,人们的生活节奏也随之加快。
人们都要求自己在很短的时间尽量做到最多的事。
所以开发一款能让人们能将其所有的事有序地组织起来,同时又能提醒在什么时间该做什么事的软件是很有必要的。
虽然目前这样软件很多功能虽强大,但是用起来都很复杂,有些功能并不实用,操作也太麻烦。
该课题的终极目标是开发一个实用,操作便捷的桌面闹钟应用程序,达到在日常生活工作中可以合理利用时间从而大大地提高人们的工作效率。
用java 语言实现时钟闹钟的设计,设计的时钟闹铃能够完成以下功能:正确的指针位置、日期、时间的数字显示;在设定的时间用铃声提醒,若当前时间为设置的时间时,会伴随着铃声,时间持续约1分钟。
若关闭闹铃,则铃声停止。
2.需求分析:(1)该闹铃系统可用于到时响铃功能(可设置多组闹铃);(2)该闹铃系统只需要用户给其设置闹铃时间;(3)该闹铃系统与用户的交互完全靠按键实现;(4)该闹铃系统界面在外观上要求美观。
其中最重要的是闹铃的可操作性强,能够完成必要的功能;(5)该闹铃系统的相应时间0.1秒左右。
(6)该闹铃系统出现故障时,重启系统即可。
二设计思路1.实验目的:通过时钟闹铃的设计和实现,充分掌握java语言,提高对图形界面及小程序的设计和编程能力。
用JAVA实现一个时钟
⽤JAVA实现⼀个时钟⽤JAVA实现⼀个时钟⽤图形库绘制表盘,然后⽤事件处理机制刷新窗⼝,反复重绘,让表针转动起来import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.geom.*;import java.awt.geom.Line2D.Double;import java.math.*;import java.time.LocalTime;public class MyClock {public static void main(String[] args) {// TODO Auto-generated method stubActionListener listener = new TimerClock();Timer t = new Timer(1000, listener);t.start();//System.exit(0);}}class ClockWindow extends JFrame {ClockWindow() {add(new ClockInfo());pack();}}class ClockInfo extends JComponent {private static final int DEFAULT_WIDTH = 500;private static final int DEFAULT_HEIGHT = 500;public void paintComponent(Graphics g) {Graphics2D g2 = (Graphics2D) g;g2.draw(new Ellipse2D.Double(50.0, 50.0, 400.0, 400.0));//圆⼼为250, 250//绘制⼩时刻度g2.setPaint(Color.red);double r1 = 190, r2 = 200;double cx = 250.0, cy = 250.0;for(double i = 0; i < 2.0 * Math.PI; i += (Math.PI / 6.0)) {double lx, ly, rx, ry;lx = r1 * Math.sin(i);ly = r1 * Math.cos(i);rx = r2 * Math.sin(i);ry = r2 * Math.cos(i);g2.draw(new Line2D.Double(cx + lx, cy - ly, cx + rx, cy - ry));}//绘制分钟刻度r1 = 195.0;for(double i = 0; i < 2.0 * Math.PI; i += (Math.PI / 30.0)) {double lx, ly, rx, ry;lx = r1 * Math.sin(i);ly = r1 * Math.cos(i);rx = r2 * Math.sin(i);ry = r2 * Math.cos(i);g2.draw(new Line2D.Double(cx + lx, cy - ly, cx + rx, cy - ry));}//绘制指针double hour = LocalTime.now().getHour() * Math.PI / 6.0;double minute = LocalTime.now().getMinute() * Math.PI / 30.0;double second = LocalTime.now().getSecond() * Math.PI / 30.0;//时针g2.setPaint(Color.black);g2.setStroke(new BasicStroke(4.0f));g2.draw(new Line2D.Double(cx, cy, cx + 120.0 * Math.sin(hour), cy - 120.0 * Math.cos(hour)));//分针g2.setPaint(Color.green);g2.setStroke(new BasicStroke(2.0f));g2.draw(new Line2D.Double(cx, cy, cx + 140.0 * Math.sin(minute), cy - 140.0 * Math.cos(minute)));//秒针g2.setPaint(Color.red);g2.setStroke(new BasicStroke(1.0f));g2.draw(new Line2D.Double(cx, cy, cx + 160.0 * Math.sin(second), cy - 160.0 * Math.cos(second)));//⽂字Font f = new Font("Serif", Font.PLAIN, 30);//逻辑字体g2.setFont(f);g2.setColor(Color.orange);int h = LocalTime.now().getHour();int m = LocalTime.now().getMinute();int s = LocalTime.now().getSecond();g2.drawString("" + h + ":" + m + ":" + s,10,50);}public Dimension getPreferredSize() {return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); }}class TimerClock implements ActionListener {ClockWindow frame;TimerClock() {frame = new ClockWindow();frame.setTitle("MyClock");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubframe.repaint();}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package pkg110;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.Timer;/**** @author Administrator*/public class Clock extends JFrame implements ActionListener{ public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8;public final double RAD = Math.PI / 180.0;int x, y, old_X, old_Y, r, x0, y0, w, h, ang;int sdo, mdo, hdo, old_M, old_H, hh, mm, ss;int delay = 1000;Calendar now;String st, alarm, Items1, Items2,str[];JButton jb;JComboBox jc1, jc2, jc3;JLabel jl1, jl2, jl3, jl4;JTextField jtf1, jtf2, time;JPanel jp1, jp2, jp3;Timer timer;TimeZone tz = TimeZone.getTimeZone("JST");Toolkit toolkit=Toolkit.getDefaultToolkit();/*** @param args the command line arguments*/public static void main(String[] args) {// TODO code application logic hereClock cp = new Clock();cp.setVisible(true);}Clock() {super("闹钟");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setSize(400,550);setVisible(true);Container contentPane = getContentPane();jp2 = new JPanel();jl1 = new JLabel("闹铃时间");jl1.setFont(new Font("楷体", Font.BOLD, 18));time = new JTextField("00:00",10);alarm = time.getText();jb = new JButton("修改闹铃时间");jb.addActionListener(this);jb.setActionCommand("CC");jp2.add(jl1);jp2.add(time);jp2.add(jb);contentPane.add(jp2, BorderLayout.SOUTH);ClockPanel clock = new ClockPanel();contentPane.add(clock, BorderLayout.CENTER);ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) {repaint();}};new Timer(delay, taskPerformer).start();}Color waiquan= Color.magenta;Color bianxian= Color.black;Color biaopan= Color.yellow;Color juxing= Color.yellow;Color miaozhen= Color.red;Color fenzhen= Color.red;Color shizhen= Color.red;public class ClockPanel extends JPanel {public void paint(Graphics g) {h = getSize().height - 200;g.setColor(waiquan);g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60);g.setColor(bianxian);g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62);g.setColor(biaopan);g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100);g.setColor(bianxian);g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102);r = h / 2 - 30;x0 = 30 + r - 5 + L0;y0 = 30 + r - 5 - T0;ang = 60;for (int i = 1; i <= 12; i++) {x = (int) ((r - 10) * Math.cos(RAD * ang) + x0); y = (int) ((r - 10) * Math.sin(RAD * ang) + y0);g.drawString("" + i, x, h - y);ang -= 30;}x0 = 30 + r + L0;y0 = 30 + r + T0;now = Calendar.getInstance();hh = now.get(Calendar.HOUR_OF_DAY);mm = now.get(Calendar.MINUTE);ss = now.get(Calendar.SECOND);g.setColor(juxing);g.fillRect(110,350, 150, 30);g.setColor(fenzhen);if (hh < 10)st = "0" + hh;elsest = "" + hh;if (mm < 10)st = st + ":0" + mm;elsest = st + ":" + mm;if(alarm.equals(st)){if(toolkit!=null)toolkit.beep();else {}}if (ss < 10)st = st + ":0" + ss;elsest = st + ":" + ss;{g.setFont(new Font("华文楷体", Font.BOLD, 16));g.drawString("当前时间:" + st, 115,370);}sdo = 90 - ss * 6;mdo = 90 - mm * 6;hdo = 90 - hh * 30 - mm / 2;if (old_X > 0) {g.setColor(biaopan);} else {old_M = mdo;old_H = hdo;}g.setColor(miaozhen);x = (int) ((r - 26) * Math.cos(RAD * sdo) + x0);y = (int) ((r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0;g.drawLine(x0, y0, x, (h - y));old_X = x;old_Y = y;if (mdo != old_M) {g.setColor(biaopan);old_M = mdo;}if (hdo != old_H) {g.setColor(biaopan);old_H = hdo;}g.setColor(fenzhen);x = (int) ((r - 45) * Math.cos(RAD * mdo) + x0);y = (int) ((r - 45) * Math.sin(RAD * mdo) + y0) - 2 * T0;g.drawLine(x0, y0, x, (h - y));g.setColor(shizhen);x = (int) ((r - 70) * Math.cos(RAD * hdo) + x0);y = (int) ((r - 70) * Math.sin(RAD * hdo) + y0) - 2 * T0;g.drawLine(x0, y0, x, (h - y));}}// 闹铃时间的判断及实现// 闹铃声音的实现public void actionPerformed(ActionEvent e) {if (e.getActionCommand()=="CC") {int newHou, newMin;char c;String getTime = JOptionPane.showInputDialog(this, "请输入闹铃时间格式如:", "00:00");repaint();if(getTime==null)System.out.println(getTime);judge: if (getTime != null) {System.out.println(getTime);if (getTime.length() != 5) {JOptionPane.showMessageDialog(time, "格式错误\n请按格式输入5位数字", "Error",JOptionPane.ERROR_MESSAGE);repaint();break judge;}for (int i = 0; i < (getTime.length()); i++) {c = getTime.charAt(i);if (i == 2 && !Character.isDigit(c))continue;if (i != 2 && !Character.isDigit(c)) {JOptionPane.showMessageDialog(this, "格式错误\n请按格式输入5位数字", "Error",JOptionPane.ERROR_MESSAGE);repaint();break judge;}}char[] hour = { getTime.charAt(0), getTime.charAt(1) };char[] minute = { getTime.charAt(3), getTime.charAt(4) };newHou = Integer.parseInt(String.valueOf(hour));newMin = Integer.parseInt(String.valueOf(minute));if (newHou >= 24 || newHou < 0) {JOptionPane.showMessageDialog(this, "格式错误\n小时应该是不小于0不大于23的正数","Error", JOptionPane.ERROR_MESSAGE);repaint();break judge;}if (newMin >= 60 || newHou < 0) {JOptionPane.showMessageDialog(this, "格式错误\n分钟应该是小于60的正数", "Error",JOptionPane.ERROR_MESSAGE);repaint();break judge;}new SetTime(newHou, newMin);}}toolkit=Toolkit.getDefaultToolkit();}class SetTime {String Hour;String Minute;public SetTime() { }public SetTime(int hour, int minute) {if (hour < 10) {Hour = "0" + String.valueOf(hour);} else {Hour = "" + String.valueOf(hour);}if (minute < 10) {Minute = "0" + String.valueOf(minute);} else {Minute = "" + String.valueOf(minute);}alarm = Hour + ":" + Minute;time.setText(alarm);repaint();}}}。