智能数据使Swing保持简单 - 编程入门网
to avoid null pointer exceptions
//while painting...
Object data = this.getData();
if (data != null)
return data.toString();
else
return "";
}
}
iData 工具箱提供了一个实现 ImmutableIData 的称作 DefaultImmutableIData 的抽象 类。它覆盖 Object 中的 toString() 方法以安全地返回 getData().toString() 。示例的 剩余部分将扩展 iData 层接口的缺省实现。这些缺省实现也包含在该工具箱中。 与 JTable 集成 让我们继续“自行车商店”示例,并将 iData 技术集成到 JTable 中。表有 manufacturer 、 modelName 、 modelID 、 price 、 cost 和 inventory 列。假定 ImmutableIData 实现的剩余部分紧跟 manufacturer iData 语句行编写。 实际添加到 JTable DataModel 的数据是 ImmutableIData 实现,每个实现都含有一个 DataObject 。这种添加含有 DataObject 的 iData 层实现的思想就是前面所指的间接层的 实现。 图 2. 带有含有 DataObject 的 ImmutableIData 实现的 JTable 单元 智能数据使Swing保持简单(4)时间:2011-04-16 IBM Jonathan Simon我发现使用一个助手(helper)方法(我将其称为 createRow() )来立即创建一整行是 有用的。当使用 AbstractTableModel 的子类时,可以将这一行整个添加到模型中。 createRow() 方法将 DataObject 作为参数,并为特定的表实例化适当的 ImmutableIData 实现。 清单 3. createRow() 方法
此外, createRow() 方法是确定模型中应放置何种 ImmutableIData 实现的逻辑的集中 位置。从类管理的角度,使用匿名内部类也是有用的,对于简单的 ImmutableIData 实现, 可以直接在 createRow() 方法中声明这些类。 渲染顺序 缺省渲染器通过调用对象的 toString() 方法来创建他们要显示对象的字符串表示。这就 是 ImmutableIData 实现要有一个有用的 toString() 方法是很重要的原因之一。在渲染期 间,渲染器从 JTable 接收到 ImmutableIData 实现。要渲染 iData,调用了 toString() 方法。以下表示了整个渲染顺序: iData 实现上的 toString() iData 实现上的 getData() DataObject 上的 get[FieldName]() 图 3. 渲染顺序 智能数据使Swing保持简单(5)时间:2011-04-16 IBM Jonathan Simon图 4. 只读表 动态持久性 使用 DataObject 作为 iData 的数据不仅为 iData 间接提供了灵活性,而且添加了一个 提供动态持久性的有用的数据间接层。请考虑一个已显示的表的示例,正在从外部更新该表 的值。通常,客户机需要实现复杂的逻辑来推断模型中持久存储更新值的地方。当使用 iData 和 DataObject 间接时,由于会自动持久存储新值,因此这一逻辑完全没有必要。这 就是用包含相同 DataObject 实例的多个 iData 对象填充模型的结果。当更改 DataObject 的内部值时,由于所有 iData 对象指向同一个实例,因此 DataObject 本身不会改变。通过 使用 DataObject 的读(get)和写(set)方法对其进行再查询,无须任何手工持久性的工 作,就总能返回最新的结果。客户机对更新要执行的唯一操作 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |