2010-03-31 2 views
6

Я работаю над деревом SWT, подобным одному here, однако я хочу иметь возможность показывать + знаки в некоторых случаях вместо - для расширенного элемента дерева. Это возможно ?Как изменить значки SWT Tree плюс/минус

Если нет, существует ли у Windows API пользовательские значки для расширенного/свернутого состояния элемента дерева?

+0

Решение заключается в использовании сообщения TVE_EXPANDPARTIAL в Windows. – Ali

ответ

2

Компонент SWT Tree использует собственный виджет Tree, если он доступен, например, в случае Windows - он использует собственный виджет в то время как в Linux (в зависимости от используемого движка пользовательского интерфейса) он может создавать собственное дерево самостоятельно.

В ОС, где он используется собственный виджет дерева, невозможно настроить значки + и -.

Как предложил Али (см. http://msdn.microsoft.com/en-us/library/bb773568%28VS.85%29.aspx), вы можете использовать TVE_EXPANDPARTIAL, но имейте в виду, что код зависит от ОС (даже в версиях Windows).

Вы можете, однако, пожелать использовать пользовательское изображение - используя метод getImage() в TreeContentProvider, чтобы указать иначе, а не полагаться на TVE_EXPANDPARTIAL. Это также гарантирует, что ваш код не зависит от ОС.

+0

Спасибо! TreeContentProvider не является частью SWT, хотя ... Не уверен, как вы это сделаете, но вы хорошо понимаете, что код должен быть зависимым от ОС. Я закончил реализацию 64-разрядной версии и 32-разрядной версии подкласса SWTTree. – Ali

+0

Ах! Я забыл ... это часть JFace. Связанный класс - TreeViewer. –

+1

setImage фактически не меняет значок +/-. Он добавляет изображение справа от значка +/-. – Ali