Расширение Java SWT Tree асинхронно - PullRequest
0 голосов
/ 18 апреля 2011


У меня проблема с моим SWT-деревом.Он содержит много листов, что делает расширение элемента очень трудоемким.Иногда мне даже нужно расширить все предметы.Есть ли способ расширить его асинхронно?Я пытался использовать asyncExec() на дисплее, помещая expandAll() в метод run(), но это не помогло.И это не решает первую проблему, где я хочу расширить только один элемент.Есть идеи?

Дополнительный узел: медленное расширение элемента происходит только при первом его раскрытии.Все последующие расширения одного и того же предмета (после свертывания) выполняются быстро.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Я решил проблемы производительности с большими деревьями, изменив поставщика контента на ILazyTreeContentProvider. Это не поможет, если вам нужно развернуть полное дерево сразу.

Альтернатива. Внимательно посмотрите на поставщиков контента и меток. Возможно, их операции слишком дороги, и вы можете ускорить процесс, если кешируете или предварительно рассчитываете некоторую информацию для дерева. Если, например, у вас есть нормальный (не ленивый) поставщик контента, который загружает элементы из базы данных (по одному), расширение дерева займет навсегда ...

0 голосов
/ 18 апреля 2011

Загружаете ли вы элементы модели в поток пользовательского интерфейса?В идеале вы должны загрузить элементы модели в потоке, не являющемся пользовательским интерфейсом, а затем обновить дерево, добавив элементы в потоке пользовательского интерфейса.

...