Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
ново-графического элемента, то можно избежать повторной перерисовки ос-Цдьных элементов - переопределить метод update и реализовать в нем ото-Емжение одного только нового элемента. Если же компонент имеет про-Жую структуру, можно оставить метод update без изменений.
Прорисовка контейнера
Теперь, когда известно, как работает прорисовка компонента, перейдем к рассмотрению контейнера. Для его корректного отображения необходимо выполнить два действия. Во-первых, нарисовать сам контейнер, ведь он является наследником компоненты, а значит, имеет метод paint, который может быть переопределен для задания особенного внешнего вида такого контейнера. Во-вторых, инициировать отрисовку всех компонентов, вложенных в него.
Первый шаг ничем не отличается от прорисовки обычного компонента. Как правило, контейнер не содержит никаких особых элементов отображения, ведь основную его площадь занимают вложенные компоненты. Поэтому перейдет ко второму шагу.
Если контейнер не пустой, значит, в нем есть одна или несколько компонент. Они будут отрисованы последовательно в том порядке, в каком были добавлены. Однако недостаточно просто в цикле вызвать метод Paint для каждого компонента.
Во-первых, если компонента невидима (свойство visible выставлено вfalse), то, очевидно, метод paint у нее вызываться не должен.
Во-вторых, центр координат компонента находится в левом верхнем уг-ЛУ его контейнера, а у контейнера - в левом верхнем углу его контейнера. Та-Ким образом, при переходе от отрисовки контейнера к отрисовке лежащего в Ием компонента необходимо изменить (перенести) центр системы координат.
Затем необходимо установить clip в соответствии с размером очередного компонента. Необходимо выставить значения по умолчанию для Чвета и шрифта, тем более что предыдущий компонент мог изменить их ^предсказуемым образом.
В итоге получается более удобным создать новый экземпляр Graphics для каждого компонента. Для этого существует метод create который порождает копию Graphics, причем ему можно передать аргу менты (int х, int у, int width, int height). В результате y нового Graphics будет смещен центр координат в точку (х, у), а clip-область будет получена пересечением существующего ограничителя с прямоугольником (О, О width, height) (в новых координатах). Метод create создает копию без изменения этих параметров.