摘要:在java toolbox 专栏中有该组件显示日历并通过单击选择日期的使用指南。它使用了“四人帮”设计模式,是此种模式的好例子;这篇文章同时注重日期组件与decorator 模式的说明。相关代码演示了如何使用java.util.calendar类和用自定义框架和标题栏来构造小swing对话框的方法。(作者:allen holub)
当你构造客户端图形用户界面时,每隔几月便会出现的日期选择问题 。不幸的是java并没有提供datachooser 等类,且在最近一项web研究中我发现data-selection组件略显笨重,我想让它变的简洁,易用。图 1 显示了该文章中类的几个变量,以便让你明白我说的在显示级别上的简洁的意思了。
图一 表示data_selector对象的不同方式
免费网上获取方法是“一份耕耘,一份收获”原则的最好例子。可以将业余代码重写,使其成为有益代码。该文章的例子,是来自于网上,经过我的修改、整理,保留了很多原始代码,而整个结构也发生改变(或者,我该说,我只是为原来无组织的大量java代码增加了框架而此),这就是"免费"的好处。
此组件还提供了一个好的 decorator 设计模式的演示并很好的探究了 java 的 calendar 类,另外,他也展示了如何在swing jdialog中如何实现你的标题栏和框架。
decorators
和其他复杂问题一样,通过将大问题分成许多容易实现(和测试)的小问题来大大简化解决过程。decorator 模式就是这样的一个很好的方法。
如果你用过java的i/o类,那你就看到过 decorators 。比如:快速有效的读取经过压缩的字节流是个复杂问题,可通过将一个大的类实现分解成3个独立的子问题:
1,读字节
2,通过缓冲快速有效的读取
3,压缩字节流
java 使用fileinputstream 解决第一个问题.如下面所示:
try
{ inputstream in = new fileinputstream( "file.name" );
}
catch( ioexception e )
{ system.err.println( "couldn't open file.name" );
e.printstacktrace();
}
try
{ inputstream in = new fileinputstream( "file.name" );
in = new bufferedinputstream( in );
}
catch( ioexception e )
{ system.err.println( "couldn't open file.name" );
e.printstacktrace();
}
try
{ inputstream in = new fileinputstream( "file.name" );
in = new bufferedinputstream( in );
in = new gzipinputstream( in );
}
catch( ioexception e )
{ system.err.println( "couldn't open file.name" );
e.printstacktrace();
}
date_selector selector = new date_selector_panel();
selector = new navigable_date_selector( selector );
date_selector selector = new date_selector_panel();
selector = new navigable_date_selector( selector );
selector = new titled_date_selector ( selector );
date_selector selector = new titled_date_selector();
date_selector selector = new date_selector_panel();
selector = new navigable_date_selector( selector ); // 增加导航条
date_selector_dialog popup = new date_selector_dialog( selector );
//...
date = popup.select(); // 返回用户选择日期,如果没有选择就关闭对话框则返回空值
// 你也可以这样做:
popup.setvisible( true ); // 弹出,
date = popup.get_selected_date(); //获取选择日期
注意因为你用对话框标题栏所以这里你不需要在标题中整合。和上面一样,date_selector_dialog定义了一个快速实现如图5的带有导航的对话框的构造器:
date_selector = new date_selector_dialog();
ealy ,java 爱好者,matrix jsp翻译小组成员,可以点击http://www.matrix.org.cn/user_view.asp?username=ealy查看她的个人信息
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器