快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
    JOptionPane.QUESTION_MESSAGE,      null,      new Object[]{doNotEdit, priceEqualsCost, keepProfitDifference,        keepProfitPercentage},      priceEqualsCost     );     if (result != null)     {      //persist the data      if (result.equals(priceEqualsCost))       this.bicycle.setPrice(bicycle.getCost());      //keep the delta between price and cost      else if (result.equals(keepProfitDifference))       this.bicycle.setPrice( newCost + (oldPrice - oldCost) );      //keep the same profit percentage      else if (result.equals(keepProfitPercentage))       this.bicycle.setPrice( newCost * (oldPrice / oldCost) );     }    }    return true;   }

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

时间:2011-04-16 IBM Jonathan Simon

使用非 JTable 组件

虽然,出于一致性考虑,在我们的示例中一直使用 JTable,但是使用另一个 Swing 组件 来研究一个简单的示例也是值得的。让我们创建一个含有自行车名称的 JList。仅对 Bicycle 对象的集合进行遍历,将它们封装在 BicycleModelNameImmutableIData 对象中, 然后将这些对象添加到 JList 中。请注意,在 JList 中使用了与 JTable 中相同的 iData 实例。在任何其它组件中也可以以相同方式使用这些实例。

清单 10. JList 初始化

protected void initList() {    ...    while ( ... )    {     //wrap the bicycle in an iData object and add it to the list model     Bicycle bike = ...     model.addElement(new BicycleModelNameMutableIData(bicycle));    }    //wrap the lists renderer in the iData toolkit universal renderer    //for JLists    list.setCellRenderer(new     UniversalListCellRenderer(list.getCellRenderer())); }

图 6. JList 示例

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

智能显示间接(iDisplay)

iDisplay 结构是根据 iData 来创建定制显示的层。例如,可以考虑这样一个接口:其中 ,首选的 Manufacturer 应该用红色文本显示以提示用户其首选状态。通常,这需要复杂的 逻辑来检索不是由渲染器传入的数据值,这会导致复杂的代码,使得以数据为中心的定制显 示的实现变得不切实际。iDisplay 同 iData 的紧密集成使得这一方案非常简单,这样做也 为扩展创建了一个集中的位置。

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

时间:2011-04-16 IBM Jonathan Simon

只读智能数据的显示间接层(ImmutableIDisplay)

ImmutableIDisplay 封装了特定于显示的逻辑。可以通过 ImmutableIDisplay 让对于三 种主要渲染器类型每一个有 get[Component]CellRendererComponent() 方法来实现这一点, 这三种类型是: TableCellRenderer 、 TreeCellRenderer 和 ListCellRenderer 。通过包 含 ImmutableIDisplay , ImmutableIDisplayIData 将 ImmutableIDisplay 与 ImmutableIData 集成在一起。

当 JTable 调用 UniversalTableCellRenderer 中的 getCellRendererComponent() 并传 入一个 ImmutableIDisplayIData 类型的对象时, UniversalTableCellRenderer 则转发 getCellRendererComponent 请求给相应的 get[Component]CellRendererComponent , get [Component]CellRendererComponent 位于 ImmutableIDisplayIData 所包含的 ImmutableIDisplay 中。

让我们看一看“自行车商店”演示的另外一个示例,其中用户输入一个低于 cost 的 price ,随后 price 和 cost 单元的背景颜色变红。 ImmutableIDisplay 的 getTableCellRend

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号