SWT: рисовать «иконки» в ячейках таблицы или дерева - PullRequest
3 голосов
/ 12 декабря 2010

У нас есть приложение Swing, которое мы планируем портировать на SWT / JFace. Приложение Swing рисует много значков (javax.swing.Icon реализаций) в деревьях и таблицах (значок слева от текста). Если я правильно понял, SWT может рисовать только изображения (он же графические файлы). Что было бы самым простым решением нарисовать иконку или всю таблицу / клетку дерева? Заранее спасибо.

1 Ответ

3 голосов
/ 16 декабря 2010

Изображения могут быть загружены из графических файлов, или они могут быть нарисованы в памяти.

Image image = new Image(Display.getCurrent(), width, height);
GC gc = new GC(image);

// draw icon using GC

gc.dispose();

Что касается отображения их в таблицах / деревьях, самый прямой подход - установить изображение на элемент таблицы / дерева:

TableItem item = ...
item.setImage(theImage);

Однако у этого подхода есть один существенный недостаток: в Windows, когда вы впервые устанавливаете изображение для элемента таблицы, высота этого изображения становится стандартной высотой для всех элементов в таблице. Поэтому, если вы установите большее изображение, оно будет уменьшено до размера первого изображения. Если вы установите изображение меньшего размера, оно будет увеличено.

Если все ваши изображения имеют одинаковый размер, это не будет проблемой.

Однако, если вы не можете заранее предсказать размер изображений, я рекомендую использовать пользовательский интерфейс рисования для визуализации элементов таблицы / дерева. Этот подход, безусловно, более интенсивный, но дает вам детальный контроль над результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...