下载本文源代码
引言
在图形用户界面方面(gui),java一直无法与c++、pb、delphi之类抗衡,使用早期java/awt包所开发的界面实在是让人不敢恭维。随着jfc/swing的日趋成熟,开发出与可以与c++媲美的gui不再是"不可能完成的任务"。除了具有丰富的界面组件之外,以下优秀的特性更让swing如虎添翼。swing是以100%纯java实现的,且辅以jdk 1.1 轻量级ui框架为基础,没有本地代码,独立于操作系统之外,基于mvc设计模式、采用可插入的外观感觉(pl&f),这都让我们忍不住去感受一下她的魅力。
完整的jfc十分巨大,swing只是其中的一部分,本文将着重于swing包中的jlist组件以及如何定制显示。
jlist基础知识
由jlist类代表的swing列表显示一个可选取对象列表,它支持三种选取模式:单选取、单间隔选取、多间隔选取。
基于mvc的构建思想,jlist类不维护对它所显示的那些对象的引用,而是把数据管理工作委托给一个实现listmodel接口的对象;jlist类不对其显示对象的选取操作进行跟踪和维护,而是把选取管理的工作委托给一个实现listselectionmodel接口的对象;jlist类不绘制其所显示的对象,而是把列表单元的绘制工作委托给一个实现listcellrenderer接口的对象。
jlist组件把三个主要的工作(数据处理、列表项选取、单元绘制)交给其它对对象来完成,jlist的每个实例都维护对上述对象的引用,这样大大降低了各个功能模块的耦合度,易于扩展和维护。
jlist如何显示对象列表?
缺省情况下,jlist对象对图标和字符串对象会按照原样显示,而对于其它所有对象只显示对象tostring()方法的返回值。举个例子吧,有这样一个应用程序显示java.util.locale对象列表给用户,用户可以通过选择列表中的项目来改变应用程序所的处的语言环境。
想象一下,jlist将如何显示一个包含了locale对象的数据模型呢?jlist委派javax.swing.listcellrenderer来显示这些对象。正如我们所料,listcellrenderer将把对象tostring()方法的返回值显示出来。然而,locale对象返回的是iso代码,这样的显示肯定是不符合"界面交互友好"原则的。默认情况下jlist所显示的内容让大多数用户感到莫名其妙,如下图所示:
关键字 本文所属关键字相关 与本文相关文章分类 所有文章关键字导航源码编程相关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 注册表 操作系统 服务器 应用服务器 标准 网站致力的规范 |