我不知道我是否完全理解了Viewer框架。这是我认为描述框架的图像:
。
根据我的理解,当我们在Tree的一个对象上设置setInput时,该对象被送到ContentProvider。来自ContentProvider的元素将被各种过滤器过滤。之后,将对其余元素进行排序。最后,树窗口小部件将采用这些元素并显示它们。 这是对的吗 ?
答案 0 :(得分:1)
在我的理解中,当我们在一个Tree的对象上设置setInput时,这个 对象被ContentProvider所取代。元素来自 ContentProvider将通过各种过滤器进行过滤。之后, 其余的元素将被排序。最后,树小部件将 采取这些元素并显示它们。这是对的吗?
是的,这是对的。
<小时/> 的Explanation
强>
观众永远不会直接与数据/域对象对话。例如,TreeViewer不直接与域对象通信。相反,它使用另一个名为ContentProvider的对象,该对象使用您的域对象。
就像有一个内容提供者对象获取树节点的子节点一样,当涉及到实际显示节点时,树查看器还有另一个帮助对象:标签提供者。
同样为了处理表格,JFace有一个TableViewer。就像TreeViewer一样,它有一个输入(一个根对象),一个内容提供者和一个标签提供者。它比树查看器更简单,因为它不需要处理树。
现在,如果您查看默认的TreeViwer实现,那么您会发现createChildren()
方法(在节点扩展时调用)会调用getSortedChildren()
,这基本上适用于所有提供的输入上的过滤器(以及按需扩展节点时),最后应用您提供的分拣机。完成所有这些后,标签提供商将会出现。
<强>链接:强>