小小的程序3之时间同步器0.1.3

简介: 重新修改了更新时间标签和更新时间的方法,使用Timer实例更新时间,并在更新时间的方法中增加了尝试重连的次数。   界面类: /* * @(#)MainUI.java 0.1 2009-8-7 * Copyright 2006 DiaoxianSoft Development Team.

重新修改了更新时间标签和更新时间的方法,使用Timer实例更新时间,并在更新时间的方法中增加了尝试重连的次数。

 

界面类:

/* * @(#)MainUI.java 0.1 2009-8-7 * Copyright 2006 DiaoxianSoft Development Team. All rights reserved. * DiaoxianSoft PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Timer; import java.util.TimerTask; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import easyJFC.*; import easyJFC.myUtil.*; /** * {Enter Class Description} * Copyright: Copyright (c) * Company: DiaoxianSoft development team * @author Geek_Soledad * @creation date 2009-8-7 下午10:10:40 * @version 0.1 */ public class MainUI extends JFrame { private static final long serialVersionUID = 1L; private TimeSynchro timeSyn = new TimeSynchro(); private final JTextField tfURL = new JTextField(); private final JLabel lbTime = new JLabel("null"); private final JButton btOK = new JButton("确定"); private final JButton btSynchro = new JButton("同步"); MainUI() { super("小Y时间同步 V0.1.3"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(400, 120); this.setResizable(false); this.setLocationRelativeTo(null); setIcon(); } // 设置窗口图标 private final void setIcon() { ImageIcon iconImg = null; iconImg = ImageUtil.getImageIconInJar(this, "res/icon.gif"); if (iconImg != null) { this.setIconImage(iconImg.getImage()); } else { this.setIconImage(new ImageIcon("res/icon.gif").getImage()); } } // 创建界面 public final void createUI() { this.setLayout(null); JLabel lbURL = new JLabel("当前同步的网址:"); tfURL.setText(timeSyn.getUrl().toString()); lbURL.setBounds(20, 15, 100, 25); tfURL.setBounds(125, 15, 175, 25); btOK.setBounds(310, 15, 60, 25); add(lbURL); add(tfURL); add(btOK); // 确定按钮的触发事件 btOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String url = tfURL.getText(); timeSyn.setUrl(url); } }); JLabel lbRightnow = new JLabel("该网站时间:"); lbRightnow.setBounds(20, 55, 70, 25); lbTime.setBounds(95, 55, 205, 25); btSynchro.setBounds(310, 55, 60, 25); add(lbRightnow); add(lbTime); // 同步时间按钮 add(btSynchro); btSynchro.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { timeSyn.setTime(); } }); if (System.getProperty("os.name").startsWith("Windows")) { JFrameOption.setLookAndFeelAsWindows(this); } setVisible(true); } /** * 更新标签时间 */ public void refreshLbTime() { Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { timeSyn.refreshTime(); lbTime.setText(timeSyn.getDate().toString()); System.out.println(timeSyn.getDate()); } }, 0, 1000); } public static void main(String[] args) { MainUI timeSynchro = new MainUI(); timeSynchro.createUI(); timeSynchro.refreshLbTime(); } }

 

 实现功能类:

import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Calendar; import java.util.Date; import javax.swing.JOptionPane; /* * @(#)TimeSynchro.java 0.1 2009-8-7 * Copyright 2006 DiaoxianSoft Development Team. All rights reserved. * DiaoxianSoft PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ /** * 6月5日下午,CMOS电池被拆下来重装,电脑时间回到从前。所以写了这个时间同步的小程序。 * Copyright: Copyright (c) * Company: DiaoxianSoft development team * @author Geek_Soledad * @creation date 2009-8-7 上午01:02:11 * @version 0.1.1 */ public class TimeSynchro { private byte retry = 3; // 连接失败时的重试次数 private URLConnection urlCon; private URL url; private Date date; // 获取到的日期 private Calendar cal = Calendar.getInstance(); public TimeSynchro() { try { url = new URL("http://www.bjtime.cn"); } catch (MalformedURLException e) { e.printStackTrace(); } refreshTime(); } public final URL getUrl() { return url; } public final void setUrl(URL url) { this.url = url; } public final void setUrl(String url) { System.out.println("setUrl"); try { this.url = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); try { this.url = new URL("http://www.bjtime.cn"); } catch (MalformedURLException e1) { e1.printStackTrace(); } } } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } /** * 更新时间 */ public final void refreshTime() { try { urlCon = url.openConnection(); urlCon.setConnectTimeout(1000); urlCon.connect(); System.out.print("refresh.."); } catch (IOException e) { if (retry > 0) { retry--; System.out.println("Trying to retry..."); } else { e.printStackTrace(); JOptionPane.showMessageDialog(null, "连接超时,请重新输入网址"); retry = 3; } } date = new Date(urlCon.getDate()); cal.setTime(date); } /** * 调用命令行设置时间 */ public final void setTime() { refreshTime(); try { // 判断当前操作系统并设定时间 if (System.getProperty("os.name").startsWith("Windows")) { java.lang.Runtime.getRuntime().exec( String.format("cmd /c date %1$tY/%1$tm/%1$td", cal)); java.lang.Runtime.getRuntime().exec( String.format("cmd /c time %1$tH:%1$tM:%1$tS", cal)); } else if(System.getProperties().equals("Linux")){ java.lang.Runtime.getRuntime().exec( String.format("date %1$tm%1$td%1$tH%1$tM%1$tY.%1$tS", cal)); } else { System.out.println(System.getProperty("os.name")); } } catch(java.io.IOException e) { e.printStackTrace(); } } }  

目录
相关文章
|
3天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
12天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
502 203
|
5天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
661 157
|
11天前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
|
5天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
667 46