2016-10-25 13 views
1

Я пытаюсь заархивировать составной пользовательский виджет Composite. Я изучаю классы Window, Page и TabView.Попытка понять закрытые виджеты или «Закрытые» виджеты?

close() метод из окна в основном только скрыть виджет, The TabView слушать close события Page, затем вызвать remove(page) метод, это удалить page из внутренней pane, но я не нашел своего рода page.close(). Итак, что случилось с закрытыми вдовами и страницами? Все-еще существует? Мой собственный метод close() должен просто вызвать метод hide() и пожар close Событие, как и Окно? Это не несет утечки памяти?

ответ

1

Виджеты остаются работоспособными до тех пор, пока вы не назовете widget.destroy(), но до тех пор вы можете либо скрыть их, либо удалить их из своего родительского контейнера. После того, как они были удалены из одного контейнера, вы можете повторно использовать их и добавить их в другой контейнер в целом - во времена IE6 это было обычным требованием, потому что было быстрее перемещать неиспользуемые виджеты в пул и повторно использовать их, чем создавать новые один с нуля (виджет сохранит его элементы DOM, пока он не будет уничтожен).

Метод close() в Window действительно только часть семантики с помощью окна - все это действительно является удалить или скрыть виджет окна и огонь событие, так close() и open() (почти) не более чем хороший API сахара, чтобы сделать жизнь легкой для пользователя.

OTOH Page не нужен метод close(), потому что добавление и удаление страниц из TabView - это вся концепция.

+0

Спасибо, много, что многое разъясняет мне. :) Но теперь у меня есть другой вопрос: теперь дни лучше уничтожать виджеты или помещать их в какое-то место, ожидая повторного использования, как дни IE6? И это значит, что я должен позаботиться о том, чтобы вручную очистить каждый виджет, который будет показан снова, не так ли? –

+0

Больше не нужно путать виджеты - гораздо проще просто «dispose()» их и забыть об этом. – johnspackman

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