#eclipse #widget #jface #tableviewer
#eclipse #виджет #jface #средство просмотра таблиц
Вопрос:
Я разрабатываю приложение с использованием JFace в Eclipse 3.6, и я хотел бы иметь реальные виджеты — в основном флажки и кнопки — в средстве просмотра таблиц. Все, что я нашел, похоже, наводит на мысль, что на данный момент это невозможно.
Мой текущий обходной путь предполагает наличие MouseListener для элемента управления обернутой таблицей, где координаты события наведения курсора мыши преобразуются в ячейки с использованием метода getCell() и обрабатываются. Затем я использую контент-провайдера для предоставления изображений и форматированного текста, которые несколько приближены к внешнему виду соответствующих виджетов.
Проблема в том, что результат совсем не похож на родной. Есть несколько обходных путей, связанных со снятием скриншотов реальных встроенных виджетов, но это сопряжено с несколькими проблемами:
- Это взлом
- Захваченные виджеты случайно становятся видимыми, создавая мерцающий артефакт на экране
- Требуются приемы обработки изображений, чтобы полученное изображение сочеталось с цветами таблицы
- Он плохо масштабируется, например, когда требуются кнопки с другим содержимым
Есть ли способ встроить виджеты в ячейки TableViewer без использования таких громоздких методов? Базовая таблица SWT, безусловно, может это сделать, но интерфейс TableViewer, похоже, этого не поддерживает…
Ответ №1:
Для этого вы можете использовать celleditors. Это не совсем то, что вы хотите, поскольку виджеты отображаются только во время редактирования, но я думаю, что это довольно близко.
Смотрите http://wiki.eclipse.org/JFaceSnippets#Snippet027ComboBoxCellEditors или другие примеры CellEditor на странице wiki.