智能数据使Swing保持简单 - 编程入门网
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 初始化
图 6. JList 示例 智能显示间接(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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |