2013-07-31 60 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/)更適合您的要求。