- Что это делает?
Он печатает компонент, как если бы вы не переопределить метод paintComponent
. Если у вас есть цвет фона, например, это обычно окрашивается классом, который вы расширяете.
- Когда нам нужно его использовать?
Вы используете его, если не нарисовали весь компонент. Части, которые вы не рисуете, будут «сиять», что означает, что вы должны позволить суперклассическому рисовать эти части. Например, например, на примере цвета фона: если вы просто нарисовали круг в середине компонента, то super.paintComponent
будет следить за тем, чтобы цвет фона был нарисован вокруг круга.
Если вы do красите всю область вашего компонента, тогда вы нарисуете поверх того, что будет написано над super.paintComponent, и, таким образом, нет смысла в вызове super.paintComponent.
- В чем его преимущество, написав его в paintComponent()?
Это единственное логичное место, где можно положить это. paintComponent
вызывается, когда компонент должен быть окрашен, и, как упоминалось выше, если вы не рисуете весь компонент самостоятельно, вам нужно super.paintComponent
, чтобы нарисовать на деталях, которые сияют.
The documentation из paintComponent
говорит, что это очень хорошо:
[...] если вы не INVOKER реализации супер ты должен чтить непрозрачное свойство, что, если этот компонент является непрозрачным, вы должны полностью заполнить фон в непрозрачном цвете. Если вы не соблюдаете непрозрачную собственность, вы, скорее всего, увидите визуальные артефакты.
_ .. "и все, кажется, хорошо работает" _ - Попробуйте сделать [анимацию] (http://stackoverflow.com/a/22123304/2587435), не называя ее и не узнайте, что произойдет. Результат должен дать вам хорошее представление о том, почему мы должны это назвать. См. [Результат не называть его] (http://stackoverflow.com/q/26477521/2587435) –
Почему голос? – user3437460
Не было меня ...... –