2011-02-09 2 views
4

Я использую стандартную таблицу swt, которая, как вы знаете, по умолчанию, когда элемент выбран, окрашен в синий цвет (стандартные окна). Когда выбор неактивен, он становится светло-серым. Я хотел бы переопределить оба цвета ... Я искал по всей сети, но мог найти только очень старый код, который больше не работает с виджетами таблицы.swt таблица изменение выбор пункт цвет

Ниже приведен пример кода я пытался переписать цвет по умолчанию, но не кажется, что это будет работать (пожалуйста, простите за грязный код, просто пытался получить что-то работать):

table.addSelectionListener(new SelectionListener() { 
      @Override 
      public void widgetSelected(SelectionEvent event) { 
      Color rowSelectionColor = 
          new Color(Display.getCurrent(),new RGB(235, 200, 211)); 
          TableItem item =(TableItem)event.item; 
       item.setBackground(0,rowSelectionColor); 
       item.setBackground(1,rowSelectionColor); 
       item.setBackground(2,rowSelectionColor); 


      } 

      @Override 
      public void widgetDefaultSelected(SelectionEvent event) { 
      Color rowSelectionColor = 
          new Color(Display.getCurrent(),new RGB(235, 200, 211)); 
          TableItem item =(TableItem)event.item; 
       item.setBackground(0,rowSelectionColor); 
       item.setBackground(1,rowSelectionColor); 
       item.setBackground(2,rowSelectionColor); 


      } 
     }); 

Любые идеи были бы весьма массово оценены: D

ответ

1

Не знаю, есть ли более простой способ, но вы можете реализовать это с помощью «рисования владельца». См. Этот SWT Snippet. Однако это своего рода перебор.

+0

Ссылка плохо. Вот еще: http://bingjava.appspot.com/snippet.jsp?id=2211 –

4

Если вы хотите использовать TableViewer для управления своей таблицей, вы можете использовать StyledCellLabelProvider для определения цветов/шрифтов/etc для отдельных ячеек. TableViewer позаботится об аспектах «владельца рисования» для вас. Самой большой проблемой является создание ContentProvider, LabelProvider и классов ввода, которые идут с TableViewer.

+0

Подробнее: подкласс StyledCellLabelProvider, переопределить метод Update (ViewerCell), использовать ViewerCell.getElement(), чтобы получить элемент строки, вызвать cell.setText() соответственно, а также установить цвета через ячейку. –

Смежные вопросы