浅谈Swing中的渲染器接口

开发 后端
本文介绍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包的核心
责任编辑:佚名 来源: JavaEye
相关推荐

2009-07-16 10:11:06

渲染器RendererSwing组件

2009-07-15 13:48:26

Swing模型和渲染器

2017-12-26 14:27:24

2010-08-13 11:02:27

Flex渲染器

2009-07-15 09:59:11

Metal观感Swing

2014-06-18 10:34:41

Android字体渲染器OpenGL ES

2009-07-14 17:01:29

Look&FeelSwing

2009-07-17 16:49:18

lookandfeelSwing

2009-07-16 16:01:55

EventQueue

2022-04-18 08:09:44

渲染器DOM挂载Vue.js

2009-07-14 18:28:58

Swing入门

2009-07-15 13:06:38

Swing组件

2009-07-15 14:29:24

构造JListSwing

2010-08-13 11:21:31

Flex渲染器

2009-07-16 12:58:50

Swing控件

2009-07-17 12:44:01

NetBeans开发S

2009-07-10 17:20:38

Swing构件AWT构件

2017-08-22 16:40:22

前端JavaScript接口

2009-02-05 15:32:23

接口委托

2009-07-10 11:07:18

Swing和SWT
点赞
收藏

51CTO技术栈公众号