BlackBerry: переопределение краски () по сравнению с подкраской () - PullRequest
0 голосов
/ 22 апреля 2011

При создании настраиваемого поля, что я должен учитывать при переопределении paint() vs subpaint() методов для визуализации настраиваемых частей поля?

Мой код в настоящее время переопределяет paint(), но я только что прочиталJavadoc, который предлагает реализовать метод subpaint().В моих очень простых настраиваемых полях (например, в настраиваемом баннере с градиентной заливкой) единственное отличие, которое я вижу, состоит в том, что если я переопределил paint(), то я должен вызвать super.paint(), но если переопределить subpaint(), тогдаМне нужно позвонить super.subpaint().

. Я понимаю, что для более сложных настроек необходимо учитывать некоторые соображения, и весьма вероятно, что один из подходов может считаться плохой практикой.

Должен ли я изменить свой базовый подход (и подходы в моей компании), чтобы в будущем переопределить subpaint() по умолчанию?

(надеюсь, это не считается вопросом для обсуждения - чтоне в моих намерениях - спасибо)

1 Ответ

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

subpaint() действительно используется для менеджеров, не обязательно настраиваемое поле (да, менеджер - это поле). Реализация по умолчанию состоит в том, чтобы просто проходить через его дочерние поля и вызывать paintChild() вызов. paint(), с другой стороны, для Поля, чтобы рисовать связанный с ним. В вашем случае вы должны переопределить paint().

Так зачем вам переопределять subpaint()? Вы захотите, если вам нужны дочерние поля, чтобы рисовать себя в определенном порядке. Скажем, у вас есть собственный менеджер, который размещает несколько полей друг над другом. Если они должны быть нарисованы в определенном порядке, вы должны переопределить subpaint(), чтобы убедиться, что нужное поле «сверху». Кроме того, paint() менеджера назовет его subpaint(), о чем следует помнить, если вы переопределите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...