浅谈Swing中的渲染器接口

Swing的API具有很强的灵活性和可扩展性,比如标准复合数据型组件一般不需要进行渲染器扩展,就可以实现许多应用,但是当遇到需要自定义扩展的需求时,Swing的高度抽象灵活的MVC框架也可以优雅从容的完成。Swing的这一特色典型的体现在其渲染器扩展思想上。那么如何使用渲染器呢?如何自定义渲染器来扩展组件呢?如何将渲染器思想应用到自定义组件上呢?

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的晋州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

复合数据类型的组件如JTable、JTree、JList以及JComboBox都定义适合自己类型的渲染器接口,它们与渲染器接口之间的映射关系如下表所示:

组件 渲染器
JTable TableCellRenderer
JTree TreeCellRenderer
JList ListCellRenderer
JComboBox ListCellRenderer

TableCellRenderer接口定义了JTable渲染器接口:

 
 
 
  1. public interface TableCellRenderer {  
  2. Component getTableCellRendererComponent(JTable table, Object value,  
  3. boolean isSelected, boolean hasFocus,  
  4. int row, int column);  

TreeCellRenderer定义了JTree的渲染器接口。

 
 
 
  1. public interface TreeCellRenderer {  
  2. Component getTreeCellRendererComponent(JTree tree, Object value,  
  3. boolean selected, boolean expanded,  
  4. boolean leaf, int row, boolean hasFocus);  

ListCellRenderer是JList、JComboBox的渲染器接口。

 
 
 
  1. public interface ListCellRenderer  
  2. {  
  3. Component getListCellRendererComponent(  
  4. JList list,  
  5. Object value,  
  6. int index,  
  7. boolean isSelected,  
  8. boolean cellHasFocus);  
  9. }  

其实,渲染器不仅仅可以用在标准组件JTable、JList、JTree和JComboBox,也可以在自己定制的组件中使用渲染器的思想实现复杂的界面,比如UML图、工作流图、电路图,模拟JTable实现类似于MS Excel的电子表格控件,甚至可以实现自己的用户界面设计工具。前面文章中曾经提到过的数据库设计插件和报表设计插件就是根据渲染器原理自定义出的组件。

因此,熟悉了Swing的结构尤其是渲染器的思想,加上一些额外的知识,比如double buffering、glass pane、robot、swing threading、color model、java2d等等,可以做出许多事情来。人有多大胆,地有多大产。但深入学习和了解Swing的基本结构,这是前提。今天的文章主要是以实例演示了这些渲染器的应用,文中的例子只是演示作用,加深你对渲染器的印象。但是真正吃透渲染器的各种技术,还需要自己深入的学习和实践。

【编辑推荐】

  1. 介绍Swing线程相关处理
  2. 浅析Swing客户端知识
  3. Swing线程解决方案
  4. 全面比较AWT和Swing
  5. 概述JSci.swing包的核心

本文题目:浅谈Swing中的渲染器接口
分享地址:http://www.hantingmc.com/qtweb/news3/403.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联