转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> JAVA开发 >> 正文
JFC/Swing活学活用系列之定制JList显示         ★★★★

JFC/Swing活学活用系列之定制JList显示

作者:闵涛 文章来源:闵涛的学习笔记 点击数:645 更新时间:2009/4/22 23:30:09
  下载本文源代码

  引言

  在图形用户界面方面(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所显示的内容让大多数用户感到莫名其妙,如下图所示:


  再来看下面这个例子,更恰如其分地说明了JList对象的缺省显示并不能对用户提供任何有意义的数据。假设一个绘图程序提供了颜色选择列表,也许你会从中选择一种颜色用于填充,也许用于绘制线条,或者干什么都可以。尽管我们将java.awt.Color对象实例放入JList中的作法是中规中矩的,但用户却不能从中得到任何的帮助,这背离了我们的初衷。如下图所示:


  Color对象toString()方法返回的是三原色红、绿、蓝(RGB)各分量的亮度值,而不论它所表现的具体颜色是什么。除非用户知道所选取的第六行0、255、0所代表的是绿颜色,要么我们就应该在这个位置显示一些对用户更有帮助的信息。

  诚然,你也许可以把java.lang.String对象的实例放入JList中以替代Color对象的实例,但这么做却放弃了使用JList的目的:用户是要从列表中选用一种颜色并非是选取一段文本描述。

  当使用Color对象时,JList的监听变化的监听器返回的是用户实际看到的颜色。如果用String对象来替代的话,JList将把String对象返回到监听器,然后监听器再去匹配与之对应的颜色来完成填充操作,有点多此一举的感觉。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台