2012-08-06 13 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 
       {} 
      } 
     }); 

quando clicco su ogni cellula del mio tavolo, solo la prima cella di quella riga è selezionata e restituito e non esattamente quella cellacome selezionare una cella da tavolo SWT

la prego di dirmi come posso selezionare e ottenere voce da esattamente quella cella che seleziono

si prega di vedere l'immagine enter image description here

ho selezionato 3 ° colonna, ma ha restituito il TableItem della prima colonna

risposta

6

Ho riscontrato lo stesso problema prima, ed è così che l'ho risolto:

Innanzitutto, è necessario creare la tabella SWT.FULL_SELECTION`;

Quindi, è necessario ottenere la cella selezionata leggendo la posizione del mouse (poiché la tabella di base non fornisce agli ascoltatori la cella selezionata, selezionare un elemento è possibile). Ecco il codice:

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

stavo affrontando un problema simile con griglia nebulosa e scoperto che si deve attivare la selezione delle cellule sull'oggetto tavolo. Ecco la mia riga di codice:

tableViewer.getGrid().setCellSelectionEnabled(true); 

Forse si potrebbe provare a sostituire getGrid() da getTable(). Non è necessario implementare l'ascoltatore di selezione per questo.

Problemi correlati