У нас есть приложение Swing, которое мы планируем портировать на SWT/JFace. Приложение Swing рисует много значков (javax.swing.Icon
реализации) в деревьях и таблицах (значок слева от текста). Если я правильно понял, SWT может рисовать только изображения (также известные как графические файлы). Каким было бы самое простое решение для рисования значка или всей ячейки таблицы/дерева? Заранее спасибо.
SWT: рисовать значки в ячейках таблицы или дерева
Ответы (1)
Изображения можно загружать из графических файлов или рисовать в памяти.
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, когда вы впервые устанавливаете изображение для элемента таблицы, высота этого изображения становится стандартной высотой для всех элементов в таблице. Поэтому, если вы установите большее изображение, оно будет уменьшено до размера первого изображения. Если вы установите меньшее изображение, оно будет увеличено.
Если все ваши изображения имеют одинаковый размер, это не будет проблемой.
Однако, если вы не можете заранее предсказать размер изображений, я рекомендую использовать ссылку пользовательский API отрисовки для отображения элементов таблицы/дерева. Этот подход определенно более интенсивен, но дает вам более детальный контроль над результатом.