Пользовательские макеты
Иногда возникает необходимость написать собственный пользовательский класс Layout. Например, у вас есть сложный макет, который используется во многих местах приложения. Если вы не разрабатываете универсальный макет, который будет использоваться несколькими виджетами Composite, то иногда проще и быстрее вычислить размеры и расположение виджетов в получателе запросов изменения размеров.
Макеты отвечают за реализацию двух методов:
- computeSize(...) вычисляет высоту и ширину прямоугольника, охватывающего всех потомков составного элемента после установки их размеров и расположения согласно алгоритму макета. Передаваемые параметры позволяют сохранить высоту и/или ширину этого прямоугольника. Например, можно увеличить один размер при сохранении другого.
- layout(...) устанавливает размеры и позиции дочерних элементов составного виджета. В макете можно выбрать кэширование информации, связанной с макетом, например, предпочтительную область расположения для каждого дочернего элемента. Параметр
flushCache отвечает за Layout
очистку кэшированных данных, необходимых при изменении других факторов составного элемента (не связанных с размерами): создание или удаление дочернего элемента или изменение шрифта текста в виджете.
Третий метод, flushCache(...), может быть реализован для очистки кэша, связанного с определенным управляющим элементом.
Кэширование применяется для сохранения значения, возвращаемого ресурсоемким методом computeSize().
Дополнительные сведения о пользовательских макетах можно найти в статье Understanding layouts in SWT.