2013-07-31 26 views
0

我目前正在尝试更改现有的SWT应用程序,并且必须修改具有多列(Treetable)的树以在所有这些列中提供对单个“单元格”的选择。默认情况下,我只能在设置SWT.FULL_SELECTION时在第一列或整行中选择元素。我是SWT新手,搜索小时数没有成功。有没有办法实现这一点?选择SWT树中的单元格(多列)

+0

通过“选择”,你的意思是“突出”吗? – Baz

+0

@Baz:我的意思是点击单元格和“内部选择”的突出显示(蓝色墨迹)。调用tree.getSelection()应该返回突出显示的TreeItem。 – ElJuan

回答

0

您可能想看看org.eclipse.jface.viewers.TreeViewerFocusCellManager的用法来自定义Tree/Table项目单元格的选择。

+0

我已经在代码片段中找到了一个可用的JFace解决方案,但是很遗憾,我必须不要这样做。 – ElJuan

+0

恐怕你最终会做同样的事情org.eclipse.jface.viewers.SWTFocusCellManager已经在做什么。不知道为什么你不应该使用现有的查看器功能。 –

0

你有没有试过SWT.SINGLE? that..probably设置后,你将需要添加类似:

treeTable.addSelectionListener(new SelectionListener() { 

      @Override 
      public void widgetSelected(SelectionEvent e) 
      { 
       Object selectedObj = e.item; 
      } 

      @Override 
      public void widgetDefaultSelected(SelectionEvent e) 
      { 
      } 

     }); 
+1

SWT.SINGLE仅影响选择的数量(单个或多个选择),但不幸的是,它不会使树在附加列中提供选择。我猜,你发布的代码不会改变这一点。 – ElJuan

0

SWT树和表控件不支持细胞水平的选择,因为这不是由本地控件,这些控件是基于支持。 JFace中有自定义的绘制叠加层解决方案,其他人已经参考过,但它们不能很好地工作,特别是在匹配选择的本机外观时。或者,您可能会发现Nebula项目中可用的小部件(http://www.eclipse.org/nebula/)更适合您的要求。