swing框架之renderer
18页1、Swing框架之RendererSwing组件根据其所操作的数据类型分为两种,一种是标量数据类型的组件,一类是复合数据类型的组件。标量数据类型的组件操作的是基本类型的数据,如字符串、布尔、数字等,此类型组件包括JTextField、JCheckBox、JLabel、JButton等。复合数据类型的组件操作的是诸如向量、矩形和非线形等类型的数据。向量数据类型的组件有JComboBox、JList,矩形数据类型的组件有JTable,非线形数据类型的组件如JTree。为更形象地展现各种类型的数据,复合数据类型的组件往往采用标量数据类型组件来表现每种数据元素。比如JTable的某一列数据是字符串类型,那么该列的单元格往往用JLabel方式展现每个字符串;如果一列数据是布尔类型,那么该列的单元格往往用JCheckBox方式展现每个布尔值。如何实现复合数据类型的组件的渲染呢?最直接的是在paint方法中一个一个地根据数据类型画出每一个组件,但这种方法很显然代码复用率很低,大量重复了相应标量型组件的代码,代码的维护和同步会非常困难,也不容易实现皮肤切换。为解决此问题,Swing体系中提出了所谓渲染器
2、(Renderer)的概念,其核心思想是使用接口,封装和复用已有标量型组件的渲染代码,降低代码重复率,提高组件的可扩展性。渲染器是如何工作的呢?我们以JTable的渲染代码来演示渲染器的工作原理。下面代码是从JTable的UI类javax.swing.plaf.basic.BasicTableUI中摘出的部分代码(JDK 6):/注:为清晰期间,只显示了关键代码public void paint(Graphics g, JComponent c) ./计算当前可显示区域的行列范围./ 画出表格的分割线paintGrid(g, rMin, rMax, cMin, cMax);/ 画出表格单元格的内容paintCells(g, rMin, rMax, cMin, cMax);/如果正在拖动列,画出正在被拖动的线paintDropLines(g);paintCells实现所有单元格的渲染过程:private void paintCells(Graphics g, int rMin, int rMax, int cMin, int cMax) .for(int row = rMin; row
3、= rMax; row+) cellRect = table.getCellRect(row, cMin, false);for(int column = cMin; column = cMax; column+) /遍历表格的每一个单元格.paintCell(g, cellRect, row, column);cellRect.x += columnWidth;.渲染单元格的方法paintCell的实现:private void paintCell(Graphics g, Rectangle cellRect, int row, int column) if (如果当前格是正在编辑的) /重新设置编辑器的边框.else /获取当前格的渲染器TableCellRenderer renderer = table.getCellRenderer(row, column);/配置当前的渲染器Component component= table.prepareRenderer(renderer, row, column);/使用渲染器来渲染当前表格rendererPane.paintCompo
《swing框架之renderer》由会员小**分享,可在线阅读,更多相关《swing框架之renderer》请在金锄头文库上搜索。
2020年高考真题——理科综合(全国卷Ⅲ)+Word版含答案
2021年绝味鸭脖策划书
2021年熟食店创业方案
2021年熟食店开店策划
2021年卤菜店创业计划书
2021年周黑鸭网络营销策划方案
东大21年1月考试《现代设计方法》考核作业
谈我国行政管理效率的现状及其改观对策(论文)
单证员考试-备考辅导-复习资料:无贸易背景信用证案分析.docx
土木工程毕业生答辩自述.docx
建筑学毕业后工作状态真实写照.doc
C#代码规范(湖南大学).doc
xx区食药监局2019年工作总结及2020年工作计划
2019年中医院药物维持治疗门诊工人先锋号先进事迹
2019年度xx乡镇林长制工作总结
2019年性艾科工作计划书
2019年人才服务局全国扶贫日活动开展情况总结
关于组工信息选题的几点思考
摘了穷帽子 有了新模样
2019年某集团公司基层党支部书记培训班心得体会
2024-03-13 36页
2024-03-13 12页
2024-03-13 15页
2024-03-13 35页
2024-03-04 55页
2024-03-04 57页
2024-03-04 137页
2024-03-04 65页
2024-02-23 12页
2024-02-23 3页