智能数据使Swing保持简单 - 编程入门网
器以查找 Object 类型的数据,这个编辑器实际上是 一个 String 编辑器。一旦停止编辑,该编辑器就返回一个 String 值,这个 String 值持 久存储在模型中,其中使用 String 值替换 iData 层实现。下图描绘了要保持 iData 间接 的完整性必须遵循的编辑顺序。
图 5. 编辑顺序 虽然可以扩展已有的编辑器来遵循该顺序,但这种方法是不切实际的;它会导致过多的类 和造成不必要的复杂性。定制编辑器在某些独特情况下是可行的,但是大多数编辑器将遵循 相同的顺序,可以将这一顺序封装在一个单独的类中。iData 工具箱包含这个类的一个实现 ,称为 UniversalTableCellEditor 。 UniversalTableCellEditor 使用 TableCellEditor 的内涵而不是其扩展。在编辑时, UniversalTableCellEditor 从 iData 层实现抽取出数据值,并使用该值初始化所含的 TableCellEditor 。当停止编辑时, UniversalTableCellEditor 从 TableCellEditor 中检 索该值并相应地在 iData 实现中设置该值。如果开始没有指定编辑器,则 UniversalTableCellEditor 检索 JTable 中的缺省编辑器以查找 iData 实现的数据类型。 在以上所述的整个编辑程序完全封装在 UniversalTableCellEditor 中。这意味着,可以 使用任何编辑器,甚至是第三方编辑器,而不需要实现 iData 逻辑的扩展。 我建议通过将每个 TableColumn 的缺省编辑器设置成 UniversalTableCellEditor 来设 置 JTable 中的编辑器。iData 工具箱含有一个带有几个静态助手方法的实用类。实用类中 的 configureTable() 方法对 TableColumns 进行遍历,将每个当前编辑器设置成包含那一 列以前的单元编辑器的 UniversalTableCellEditor 的新实例。 当工具箱与渲染器相关时,它有具有类似功能的 UniversalTableCellRenderer ,它具有 与渲染器类似的功能。工具箱中还包括 JTree 和 JComboBox/JList 的通用编辑器和渲染器 组合。 智能数据使Swing保持简单(9)时间:2011-04-16 IBM Jonathan Simon示例:单元内验证保证了价格高于成本 编辑的标准困难是 单元内验证,即在单元编辑停止之前进行数据验证。 setData() 方法 创建了一个用于单元内验证的集中位置。请考虑这样一个示例,在对 price 或 cost 进行编 辑之后,如果 price 值低于 cost ,则用户应该接到通知。这时,我们希望向用户显示下列 选项: 对两个值不做任何处理。 提高 price 使之等于 cost 。 修改未编辑的那个值,使这个值与刚编辑过的值之间的差值与最初的价差相等。 在 setData() 方法中,实现它们相对比较容易。它向用户提供了一个 JOptionPane 以标 识首选的选项。一旦选定了某个选项,则会执行计算以设置适当的值。知道实现这一业务逻 辑的所有数据值以及集中位置是 iData 技术灵活性的关键。 清单 9. 单元内验证
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |