2016-11-23 10 views
0

В настоящее время я работаю с Nebula GridTable и хотел бы реализовать копию & паттерн functunality для строк и столбцов таблицы. Выбор строки выполнялся из окна, но я хотел бы, чтобы выбранный столбец был нажат на ячейку заголовка. GridTableViewer создается следующим образомКак выбрать столбцы в Nebula GridTable

new GridTableViewer(parent, SWT.FULL_SELECTION | SWT.V_SCROLL | 
SWT.H_SCROLL | SWT.MULTI |SWT.WRAP | SWT.VIRTUAL) 

Для этого я реализовал SelectionListener для сетки следующим образом:

v.getGrid().addSelectionListener(new SelectionListener(){ 

     @Override 
     public void widgetSelected(SelectionEvent e) 
     { 
      v.getGrid().selectColumn(e.y); 
      v.getGrid().update(); 

     } 

     @Override 
     public void widgetDefaultSelected(SelectionEvent e) { 
      // TODO Auto-generated method stub 

     } 

     }); 

отладчик позволяет мне предположить, что выбран столбец, но это ISN 't выделен в пользовательском интерфейсе. Что мне нужно сделать, чтобы выделить несколько столбцов и выделить работу?

С наилучшими пожеланиями, Christoph

ответ

1

Я нашел это сам, и я был очень сложно решить. Конфигурация GridViewer была правильной, но она важна для флага выбора ячейки в сетке. Поэтому я добавил следующую строку для выбора ячейки.

tableViewer.getGrid().setCellSelectionEnabled(true); 

Чтобы выбрать столбец, щелкнув заголовок таблицы, можно реализовать следующим образом.

column.addSelectionListener(new SelectionListener(){ 

     @Override 
     public void widgetSelected(SelectionEvent e) 
     { 
      int column = ((GridColumn) e.item).getCellRenderer().getColumn(); 
      tableViewer.getGrid().selectColumn(column); 
     } 

     @Override 
     public void widgetDefaultSelected(SelectionEvent e) { } 

    });