2016-11-04 1 views
0

У меня есть JView TableViewer с 5 столбцами. В одной колонке может быть длинная строка. Этот тест установлен в ColumnLabelProvider, вызывая метод getText(Object element).JFace TableViewer Усечь и развернуть ColumnLabelProvider Текст в виде столбца Развернуть

В настоящее время текст усекается в конце строки до ширины столбца и заканчивается символом «...», который добавляет символы в текст, когда пользователь настраивает размер ширины столбца.

Я хотел бы иметь это поведение, но с «...» в середине текста String, чтобы пользователь мог видеть первую часть текста и конец текста независимо от того, какой размер в настоящий момент установлен столбец.

Например моя колонка в настоящее время обрезает «this is a long piece of text larger than the column width» в «this is a long piece of text larger...»

, и я хотел бы, чтобы отобразить его

«this is a long piece ... column width» , но и иметь этот текст расширить с середины когда это ширина столбца расширяется и сжимается снова, когда ширина столбца сокращается.

Любые мысли о том, как я могу достичь этого, используя Jview Tableviewer в приложении RCP E4?

Было бы неплохо, если бы я мог переопределить существующий метод, который обрезает текст в конце текста String.

+0

Я думаю, что это делается с помощью любого собственного управления, которое использует таблица, и варьируется в зависимости от ОС (например, не для MacOS). Это затрудняет изменение. Возможно, вы можете сделать это с OwnerDrawLabelProvider –

ответ

0

В конце концов, мне пришлось создать метод внутри поставщика меток столбцов, который принимает полный текст и ширину столбца - измеряет текущую ширину столбца и занимает длину текста в поставщике ярлыков и разделяет его в соответствии с к ширине столбца. По мере того как столбец расширяется, подстрока 1 и подстрока 2 растут. Помещение подстроки1 в голову и подстрока2 в хвосте с эллипсисом посередине. Это далеко не эффективный код, но работает для наших целей. Я добавил ControlListener в столбец и выполнил метод @Override метода controlResized (ControlEvent e), который обновит средство просмотра, в котором находится столбец при изменении размера столбца.

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