2011-12-12 46 views
0

我在jface視圖中有一個jface tableviewer表,用戶可以單擊tableviewer表的任意一行,單擊視圖時必須導航到另一個視圖並將選定的行ID發送到導航的視圖。 截至目前我可以導航到另一個視圖成功,並且還與代碼在導航到它的同時將所選對象從jface視圖發送到另一個jface視圖

viewer.getTable().addListener(SWT.Selection, new Listener() { 
@Override 
public void handleEvent(Event e) { 
    try { 
     int selected = viewer.getTable().getSelectionIndex(); 
     String selection = viewer.getTable().getItem(selected).getText();  PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("E2E_tab_view.view5"); 
    } 
    catch (PartInitException e1) { // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } } }); 

,但無法將這個選擇的行ID發送給其他視圖,而導航獲取選中行ID。 有人能幫助我嗎?

回答

1

而不是直接引用其他視圖,您應該利用工作臺頁面的ISelectionService

的第一視圖,設置表查看器成爲其網站的選擇提供:

getSite().setSelectionProvider(viewer); 

在別人看來你註冊的IWorkbenchPage一個選擇監聽器:

getSite().getPage().addSelectionListener(firstViewID, listener); 

在您的listener中,您可以使用IStructuredSelection接口訪問所選項目:

public void selectionChanged(IWorkbenchPart part, ISelection selection) { 
    //Assuming structured selection from structured viewer 
    IStructuredSelection structSel = (IStructuredSelection)selection; 
    Object selElement = structSel.getFirstElement(); 
} 
+0

我只需要將字符串值發送到下一個視圖導航。你現在可以幫忙嗎? –

+0

@PramodiniRaju我更新了我的答案。除此之外,沒有什麼可做的了。 –

相關問題