快速业务通道

智能数据使Swing保持简单 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
erer() 方法检索 DataObject ,并检查 price 是否低于 cost 。如果是 这样,就将背景设置为红色;否则就将背景设置为白色。当没有出现特例时,记住将背景显 式地设置成缺省颜色,这一点很重要。Swing 使用最轻量级的模式用于渲染,重复地绘制同 一个组件。如果更改了特例的标准设置而又没有为标准情况复位,那么就会产生难以预料的 结果。

清单 11. Bicycle 成本的 getTableCellRenderer()方法根据数据对单元着色

public TableCellRenderer getTableCellRenderer(JTable table, Object value,   boolean isSelected, boolean hasFocus, int row, int column) {     //cache old background for change comparisons     Color oldColor = renderer.getBackground();     //cache old background for change comparisons     Color newColor = null;     //check to see if Object is a MutableIData     if (value instanceof MutableIData)     {      MutableIData arg = (MutableIData)value; //cast it.      Bicycle bike = (Bicycle)arg.getSource();      if (arg.getData() instanceof Number) //check the data type      {      // retrieve price and cost from the DataObject       double cost = ((Number)arg.getData()).doubleValue();       double price = bike.getPrice();       //make comparisons       if (price > cost)        newColor = Color.cyan;       else        newColor = Color.red;      }     }     // check and see if color changed     if (!newColor.equals(oldColor))       this.setBackground(newColor); }

图 7. 带有 price 和 cost 背景颜色验证的表

智能数据使Swing保持简单 - 编程入门网

智能数据使Swing保持简单(12)

时间:2011-04-16 IBM Jonathan Simon

可编辑智能数据的显示间接层(MutableIDisplay)

对于 iDisplay 实现,也存在不可修改/可修改的差异。 MutableIDisplay 负责编辑器 ,而 ImmutableIDisplay 负责渲染器。就象 ImmutableIDisplayIData 一样,有一个继承 MutableIData 且含有一个 MutableIDisplay 的 MutableIDisplayIData 。其用法同 ImmutableIDisplay 的用法相同,不同之处只是它实现的是 get[Component]CellEditor() 方法而不是 get[Component]CellRenderer() 方法。工具箱包含 JTable、JTree 和 JComboBox 的定制编辑器。

将 get[Component]CellRenderer() 和 get[Component]CellEditor() 方法转发到 iDisplay 创建了一个有用的间接层。主要结果是产生了一个定制显示设置和功能的集中的、 已封装的位置。iData 使用 iDisplay 的内涵而不是扩展,这样,除了限制了类的数目之外 还增加了灵活性和可扩展性。最为重要的是,几乎不需要定制编辑器和渲染器,它们通常包 含非常复杂的显示逻辑。虽然需要完整的定制编辑器和渲染器,但是可以使用由 iDisplay 提供的间接层来实现大多数显示。

缺陷

在实现 iData 技术时,需要记住有几个缺陷:

性能:对于大多数应用程序来说,iData 技术并没有带来显著的性能开销。该技术规定了 大量的间接而不是逻辑或处理。然而,如果 getData() / setData() 方法或 get [Component]CellRenderer() / Editor () 方法有太多逻辑,那么就会产生问题。每次绘制 组件时,就会为组件中的每一个单元调用这些方法中的任何逻辑。因此,请尽可能地使这些 方法保持简洁。

添加到代码库中的类:毫无疑问,使用 iData 技术需要相当数量的类。任何面向对象的 技术都会如此,而且这有一定好处。事实上,在这些额外的类中驻留着大量特定于应用程序 的业务

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号