如何在树形视图中隐藏具有树形层次结构的第一列?

3
我想完全隐藏TreeViewer中的第一列。如果使用setWidth(0)来隐藏它,那么下一个可见列将获得三角形和填充。最愚蠢的方法是在隐藏第一列时处理TreeViewer并创建TableViewer。是否有任何可靠的方法来解决这个问题?
编辑。演示如下:
1. 原始表格具有idlabel列 2. 隐藏了id列的表格。宽度为1像素。虚线分隔符非常丑陋。 3. 隐藏了id列的表格。宽度为0像素。现在第二列具有重新格式化的元素。
PS:我可以在运行时使用鼠标成功隐藏第一个id列(没有虚线分隔符,并且第二列看起来相同)。但是如何通过代码实现呢?我尝试阅读JFace源代码,但没有找到任何有用的公共方法。

“_gets triangles and paddings_”是什么意思?你能加上一张截图吗? - Baz
有趣的问题。你能告诉我们为什么你想这样做,而不是仅仅使用带有自定义IContentProvider的TableViewer吗? - Tonny Madsen
1
嗯,第一列是树形结构。您希望我使用TableViewer重新实现第一列的树形逻辑吗?用户可以随时隐藏/显示第一列。 - Ezhik
嗨!我认为问题在于三角形和衬距不属于“第一列”本身,它们属于整个项目(行),这是子系统的根,我的意思是,如果您实现一个可以移动和重新排列列的树,则三角形和缩进不随着您移动而移动,它们始终停留在树的最左侧部分,因此,我认为您试图做的是不可能的...您应该尝试使用表格并自己实现功能... - Mostafa Zeinali
谢谢。是的,我按照您说的做了。这种设计对我来说很粗糙,我想找到更好的解决方案。 - Ezhik
1个回答

0
您需要在您的ITreeContentProvider实现中进行处理,在您的getElements()中,您不应该返回根元素,而是返回其子元素,在getParent()中,您应该为根元素返回null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接