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

cuando hago clic en cualquier celda de mi mesa, se selecciona y se devuelve sólo la primera celda de esa fila y no precisamente esa célulacómo seleccionar una celda de la tabla SWT

por favor dígame cómo puedo seleccionar y obtener elemento de exactamente eso célula que selecciono

favor ver la imagen enter image description here

he seleccionado tercera columna, pero se devolvió el TableItem de la primera columna

Respuesta

6

me encontré con el mismo problema antes, y esto es cómo lo resolví:

En primer lugar, usted debe hacer el SWT.FULL_SELECTION` mesa;

Luego, debe obtener la celda seleccionada leyendo la posición del mouse (porque la tabla básica de swt no proporciona oyentes para obtener la celda seleccionada; seleccionar un elemento es posible). Aquí está el código:

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

que estaba frente a un problema similar con rejilla nebulosa y descubrió que usted tiene que permitir la selección de células en el objeto de tabla. Aquí está mi línea de código:

tableViewer.getGrid().setCellSelectionEnabled(true); 

Quizás se pueda intentar reemplazar getGrid() por getTable(). No necesitará implementar el oyente de selección para esto.

Cuestiones relacionadas