2012-08-06 55 views
6
table.addSelectionListener(new SelectionAdapter() 
     { 
      public void widgetSelected(SelectionEvent e) 
      { 
       if(table.getSelectionIndex() != -1) 
       { 
        System.out.println(table.getSelectionIndex()); 
        TableItem item = table.getItem(table.getSelectionIndex()); 
        System.out.println(item.toString()); 
       } 
       else 
       {} 
      } 
     }); 

,當我在我的表中的任意單元格點擊,只有該行的第一個單元格被選中,返回,不完全是細胞如何選擇SWT表的一個單元格

請告訴我,我怎麼能選擇並正是細胞,我選擇

請參閱 enter image description here

我選擇了第3行的影像獲取項目,但它返回第一列

的表項

回答

6

我以前遇到同樣的問題,這就是我如何解決它的:

首先,你應該讓表SWT.FULL_SELECTION`;

然後,您必須通過讀取鼠標位置來獲取選定的單元格(因爲基本swt表不提供偵聽器來獲取選定的單元格;可以選擇一個項目)。這裏是代碼:

table.addListener(SWT.MouseDown, new Listener(){ 
     public void handleEvent(Event event){ 
      Point pt = new Point(event.x, event.y); 
      TableItem item = table.getItem(pt); 
      if(item != null) { 
       for (int col = 0; col < table.getColumnCount(); col++) { 
        Rectangle rect = item.getBounds(col); 
        if (rect.contains(pt)) { 
         System.out.println("item clicked."); 
         System.out.println("column is " + col); 
        } 
       } 
      } 
     } 
    }); 
0

我正面臨與星雲網格類似的問題,並發現你必須在表對象上啓用單元格選擇。這裏是我的代碼行:

tableViewer.getGrid().setCellSelectionEnabled(true); 

也許它可以嘗試用getTable()替換getGrid()。您將不需要爲此實現選擇監聽器。

相關問題