查看器框架

时间:2011-10-19 09:27:26

标签: swt jface

我不知道我是否完全理解了Viewer框架。这是我认为描述框架的图像:

enter image description here

根据我的理解,当我们在Tree的一个对象上设置setInput时,该对象被送到ContentProvider。来自ContentProvider的元素将被各种过滤器过滤。之后,将对其余元素进行排序。最后,树窗口小部件将采用这些元素并显示它们。 这是对的吗 ?

1 个答案:

答案 0 :(得分:1)

  

在我的理解中,当我们在一个Tree的对象上设置setInput时,这个   对象被ContentProvider所取代。元素来自   ContentProvider将通过各种过滤器进行过滤。之后,   其余的元素将被排序。最后,树小部件将   采取这些元素并显示它们。这是对的吗?

是的,这是对的。

<小时/> 的 Explanation

观众永远不会直接与数据/域对象对话。例如,TreeViewer不直接与域对象通信。相反,它使用另一个名为ContentProvider的对象,该对象使用您的域对象。

enter image description here

就像有一个内容提供者对象获取树节点的子节点一样,当涉及到实际显示节点时,树查看器还有另一个帮助对象:标签提供者。

enter image description here

同样为了处理表格,JFace有一个TableViewer。就像TreeViewer一样,它有一个输入(一个根对象),一个内容提供者和一个标签提供者。它比树查看器更简单,因为它不需要处理树。

enter image description here

现在,如果您查看默认的TreeViwer实现,那么您会发现createChildren()方法(在节点扩展时调用)会调用getSortedChildren(),这基本上适用于所有提供的输入上的过滤器(以及按需扩展节点时),最后应用您提供的分拣机。完成所有这些后,标签提供商将会出现。

<强>链接:

  1. Using JFace and SWT in stand-alone mode
  2. Using the JFace image registry