2010-03-31 150 views
6

我正在使用类似于here的SWT树,但是,我希望能够在某些情况下显示+符号而不是 - 用于展开树项目。这可能吗 ?如何更改SWT树加号/减号图标

如果没有,是否有Windows API为树项目的展开/折叠状态提供自定义图标?

+0

解决方案是在Windows中使用TVE_EXPANDPARTIAL消息。 – Ali 2010-04-06 16:20:41

回答

2

如果可用,SWT树组件使用本机树窗口小部件(例如Windows) - 它在Linux上使用本机窗口小部件(取决于正在使用的UI引擎),它可以自行创建自定义树。

在使用本地树小部件的操作系统上,无法自定义+和 - 图标。根据Ali的建议(请参阅http://msdn.microsoft.com/en-us/library/bb773568%28VS.85%29.aspx),您可能希望使用TVE_EXPANDPARTIAL,但请记住,代码将依赖操作系统(即使在Windows版本中)。

但是,您可能希望使用自定义图像 - 在TreeContentProvider中使用getImage()方法来指示其他方式而不是依靠TVE_EXPANDPARTIAL。这也将确保您的代码与操作系统无关。

+0

谢谢! TreeContentProvider不是SWT的一部分,尽管......不知道你会怎样做,但你提出了一个关于代码必须依赖于操作系统的好处。我最终实现了SWTTree子类的64位版本和32位版本。 – Ali 2010-05-07 14:37:03

+0

啊!我忘了......这是JFace的一部分。相关类是TreeViewer。 – 2010-05-10 04:26:14

+1

setImage实际上并没有改变+/-图标。它在+/-图标的右侧添加图像。 – Ali 2010-05-10 19:38:04