Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14406506
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:45:46

下载本文示例代码
  下载本文源代码  引言  在图形用户界面方面(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对象返回到监听器,然后监听器再去匹配与之对应的颜色来完成填充操作,有点多此一举的感觉。共2页。 1 2 :   下载本文源代码  引言  在图形用户界面方面(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对象返回到监听器,然后监听器再去匹配与之对应的颜色来完成填充操作,有点多此一举的感觉。共2页。 1 2 : 下载本文示例代码


JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示JFC/Swing活学活用系列之定制JList显示
阅读(220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~