注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > Java 内容正文:用Java Swing作一个日历控制程序

用Java Swing作一个日历控制程序

发布时间:2006-05-08 16:14:06 来源:Blog 网友评论 0 条

日期是最基本的数据形式之一,因此很多语言或者数据库都提供了对日期的支持,或内置或提供这一类的库。Java也不例外;Java的应用编程接口提供了以跨平台独立语言的方式描述,计算,对比,显示以及便携式分析日期。在这篇文章里,我要讲讲关于Swing的自定义控制,允许你在视觉上获取时间信息而不是用敲命令的方式。用这种方法,你可以避免无效的时间信息,让你的使用者以视觉的方式得到享受。

Java中的日期

Java描述日期和时间的方法使用传统的Date命令或者Java的一些子库。不管它的名字是什么,日期的类并没有普通意义上的日期的概念(日,月,年等等)技术上讲,它仅仅是从1970年1月1日 00:00:00 GMT开始百万分之一秒的累加的一个结果。尽管这些关于日期的类有各种各样的处理日期的方法,这都是不够的。

为了方便的解决日期问题, JDK 1.1 介绍了一个抽象的类java.util.Calendar。具体的计算日期的子类都会根据日历系统使用一个指向特定日期的指针。这是因为日历系统历来就是有很多种方法来计算自己的日期(比如阳历,罗马历,阴历)。

Java应用编程接口提供了名为java.util.GregorianCalendar的类来根据阳历系统处理日期信息。

最终,名为java.text.DateFormat的类就是一种抽象的处理格式解释日期种类的独立于语言之外的方式。这种方式依靠那些惯例,法则,以及已知的语言要求的位置运行着。名为DateFormat的具体的子类进行实际的工作。例如,名为java.text.SimpleDateFormat的子类允许你根据现有的方式分析或者设定一个日期的格式。

总体来说,这三个最基本的类(Date, Calendar, 以及 DateFormat)提供了强大的灵活的处理日期的体系。也许开始看来会有些疑惑,但你一旦明白了,你就会看到这样的结构是十分有意义的,并且在其背后有很强的逻辑背景。(看看JDK的API文档,你就会得到根多的文档和例子)

定做的日期控制

尽管,Java提供了你可以对日期数据操作的方法,如果让你处理三个不同的类,看起来也有些麻烦。有时你需要使用很多方法,利用很多实体来完成一个简单的任务。除那些之外,Swing并不能提供进入日期的组件。当然,如果使用标准的控制如text box也不难完成。不过,日期在应用中是如此的常见,以至于我们常常一遍一遍地写相同的代码,输入,分析,检查时间。

基于以上几点原因考虑,我建立了一个简单的自定义的控制,你可以使用它来访问日期数据。基本上说,这就是一个显示日期的标准的按钮 (请看图A)。

图 A

自定义日期控制

当你点击之后,会弹出一个日期对话框,并允许你选择一个新的日期 (请看表格B)。

点击OK键完成一次更新。

图 B

  日历对话框弹出

   这样做简化了应用逻辑,因为使用者不会访问到一个无效的日期。并且由于对话框看上去像一个日历,这样做更有利于使用者掌握星期几这个非常有用的日期信息。

   自定义的按键控制在名为DateButton的类 (列表A)中描述。使用起来非常简明—仅仅是列举一个名为DateButton的实体,并且像加载普通的控制一样把它加到一个方框中。

   按键就是表示的日期的实体,执行起来就像键入“date”命令的反映一样。这就意外着只要名为PropertyChangeListener的时间寄存器发生变化你就可以设置并得到时间。表格 A说明了名为 DateButton 的应用编程接口,并且 列表B是一个使用的例子。

   表格 A

  自定义的按键应用编程接口是十分简单的。你可以利用其中的一个构造器来建立一个例子,并且正确地获取或设置时间信息。需要注意的是这是一个标准的按键,也因此它继承了很多标准按键的方式,包括注册的方式。
方法描述
DateButton(Date)建立一个新的名为DateButton的类,用来初始化日期。
DateButton( )建立一个新的名为DateButton的类,用来初始化系统日期。
getDate( )得到正确的日期值。
setDate(Date)设置正确的日期值。

  自定义按键控制的应用编程接口

   日历对话框

   除了自定义一个名为DateButton的控制器之外,我们还要建立一个自定义的对话框,名为CalendarChooser (参照 列表 C), 你可以自由地从列表中选择月份,年份或日子 (参照表格B)。尽管它是根据名为Datebutton控制自动显示的,你也可以用你自己的方法来使用它。建立一个名为 CalendarChooser的类,使用一个选好的方式来运行它(参照表格B完成应用编程接口)。

   表格 B

使用日历对话框选择一个日期是非常简单的。使用一个构件器来建造一个对话框的实体,使用其中的一种方法来选择日期。
方法描述
DateChooser(Dialog, title)建立一个新的名为DateChooser的类,并且赋予其标题和对话信息。
DateChooser(Dialog)建立一个新的名为DateChooser的类,并且赋予其对话信息。
DateChooser(Frame, title)建立一个新的名为DateChooser的类,并且赋予其框架和对话信息。
DateChooser(Frame)建立一个新的名为DateChooser的类,并且赋予其框架。
select(Date)显示一个已选好日期的对话框,你可以任意改变日期;返回选择好的日期。如果你取消对话框则返回一个空值,并关闭对话框。
select( )与上述相同,用系统日期代替选择的日期。

  日历对话框应用编程接口

   这个名为DateChooser的类,有些复杂。我不得不对每个月的日历建立一个新的控制器,因为这些标准控制里面没有我需要的。另一方面讲,这也说明了敬爱能力一个新的控制是多么地容易,靠鼠标和键盘地互动就能完成。

   注意到在年份选择列表中年份的显示,是由名为FIRST_YEAR和 LAST_YEAR的常数预先决定的。同样地,其它常数也决定一些对话框视觉方面(如颜色)的效果。稍加设计,自由地修改这些参数并不困难。

   同样地,非常重要的一点,名为DateChooser的类和名为DateButton的类都是以英式(月份和星期几)或美式日期格式定义的。由于这些也是用常数来定义的,所以修改起来也十分简单。如果你想修改的话,这也是完全和语言无关的。

相关文章
  • 用Java实现FTP服务器解决方案
  • 如何使用Java编写多线程程序
  • 利用Java语言实现数据报编程之单播
  • 用Java开源项目JOONE实现人工智能编程
  • 用Java实现HTTP文件队列下载
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Eclipse开发J2ME程序之插件安装
下一篇文章:Weblogic81和Hibernate 的集成问题
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Java控件设计入门
Java控件设计入门
推荐阅讯
  • Java学习从入门到精通
  • Eclipse Form程序设计快速入门
  • 使用Java动态创建ODBC数据源
  • 常见的十四种Java开发工具及其特点(1)
  • Java数据库中时间字段适合何种数据类型
  • 论全世界所有程序员都会犯的错误
  • 通过JDBC连接oracle数据库的十大技巧
  • 把WebLogic EJB程序迁移到JBoss上
  • 在java中找到需要的资源文件路径
  • 用Java事件处理机制实现录制回放功能(1)
阅读排行
  • 1.Java连接SQL Server 2000
  • 2.Java文件操作详解
  • 3.Java控件设计入门
  • 4.Java操作Excel电子表格
  • 5.Java: JNI完全手册
  • 6.Java命令行简介
  • 7.开发J2EE应用应遵循的几点原则
  • 8.Servlet与Javabean配置
  • 9.Java规则引擎与其API应用详解
  • 10.CLASSPATH详解
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载