电子时钟java写的

合集下载

java 模拟时钟问题

java 模拟时钟问题

java 模拟时钟问题编写的JA V A动态模拟时钟,结果每次都走三个格(就相当于1s走了3s的时间)import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;import java.text.SimpleDateFormat;import java.util.Calendar;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){}}}}。

用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();}}。

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⼩⽩还请客官您多多包含呀!。

java简易电子时钟代码

java简易电子时钟代码

import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.text.SimpleDateFormat;public class ClockJFrame extends JFrame{private Date now=new Date();Panel buttons=new Panel();Button button_start=new Button("启动");Button button_interrupt=new Button("停止");Clock label=new Clock();public ClockJFrame() //构造方法{super("电子时钟");this.setBounds(300,240,300,120);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLayout(new BorderLayout());this.getContentPane().add("North",label);//初始化一个容器,用来在容器上添加一个标签this.getContentPane().add("South",buttons);buttons.setLayout(new FlowLayout());buttons.add(button_start);buttons.add(button_interrupt);setVisible(true);}private class Clock extends Label implements ActionListener,Runnable{ private Thread clocker=null;private Date now=new Date();public Clock(){button_start.addActionListener(this);button_interrupt.addActionListener(this);SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");//可以方便地修改日期格式String t = dateFormat.format( now );this.setText(t);}public void start(){if(clocker==null){clocker=new Thread(this);clocker.start();}}public void stop(){clocker=null;}public void run(){Thread currentThread=Thread.currentThread();while(clocker==currentThread){now=new Date();SimpleDateFormat dateFormat = newSimpleDateFormat("HH:mm:ss");//可以方便地修改日期格式String t = dateFormat.format( now );this.setText(t);try{clocker.sleep(1000);}catch(InterruptedException ie){JOptionPane.showMessageDialog(this,"Thread error:+ie");}}}public void actionPerformed(ActionEvent e){if (e.getSource()==button_start) {clocker = new Thread(this); //重新创建一个线程对象clocker.start();button_start.setEnabled(false);button_interrupt.setEnabled(true);}if (e.getSource()==button_interrupt) //单击中断按钮时{clocker.stop(); //设置当前线程对象停止标记button_start.setEnabled(true);button_interrupt.setEnabled(false);}}}//内部类结束public static void main(String[] args) {ClockJFrame time=new ClockJFrame();}}运行结果:。

Java模拟时钟制作案例

Java模拟时钟制作案例

程序代码

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

运行效果
面板刻度


绘制刻度
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; }

构建框架


主类time1. 实现接口。 继承Jframe。 添加main方法
完善代码
添加timer 通过Date获取当前时间 通过SimpleDateFormat处理时间格式。 实例化主类,使其在控制台打印当前时间, 每隔一秒打印一次。 修改后的代码如下。

程序代码

导入类和文件。
程序代码
数字时钟
添加JLabel,在JLabel上显示时间 把JLabel添加到JFrame上。

程序代码

导入类和文件。
程序代码
数字时钟

运行效果。
绘制秒针

使用直线绘制秒针。
定义秒针Line2D.Double l Line2D.Double l =new Line2D.Double(125,50,125,125);
面板刻度


绘制刻度
}else { j=70; } b[0]=125+80*Math.cos((i*6-90)*Math.PI/180d); b[1]=125+80*Math.sin((i*6-90)*Math.PI/180f); b[2]=125+j*Math.cos((i*6-90)*Math.PI/180f); b[3]=125+j*Math.sin((i*6-90)*Math.PI/180f); l1[i] =new Line2D.Double(b[0],b[1],b[2],b[3]); }

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时钟程序(图片文本框)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) {}}}。

利用JAVA实现一个时钟的小程序

利用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。

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

package com.lw;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
public class DigitalClock extends JFrame {
/**
*
*/
private static final long serialV ersionUID = 4962111797317773666L;
private JPanel contentPane;
private JLabel label;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DigitalClock frame = new DigitalClock();
frame.setV isible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DigitalClock() {
addWindowListener(new WindowAdapter() {
@Override
public void windowActivated(WindowEvent e) {
do_this_windowActivated(e);
}
});
setTitle("\u6570\u5B57\u65F6\u949F");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 200, 100);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
label = new JLabel("New label");
label.setFont(new Font("微软雅黑", Font.BOLD, 20));
label.setHorizontalAlignment(SwingConstants.CENTER);
contentPane.add(label, BorderLayout.CENTER);
}
private String format(int number) {
return number < 10 ? "0" + number : "" + number;// 如果数字小于10就在其前面加0补齐
}
private String getTime() {
Calendar calendar = new GregorianCalendar();
int hour = calendar.get(Calendar.HOUR_OF_DAY); // 获得当前小时
int minute = calendar.get(Calendar.MINUTE); // 获得当前分钟
int second = calendar.get(Calendar.SECOND); // 获得当前秒
return format(hour) + ":" + format(minute) + ":" + format(second);// 返回格式化的字符串
}
protected void do_this_windowActivated(WindowEvent e) {
new Thread() {
public void run() {
while (true) {// 让时钟一直处于更新状态
label.setText(getTime()); // 更新时钟
try {
Thread.sleep(1000); // 休眠一秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}.start();
}
}。

相关文档
最新文档