Подтвердить что ты не робот

Разница между paint() и paintcomponent()?

Я пробовал учебники по этому вопросу, но я до сих пор не совсем понимаю. В основном мой вопрос: какой метод лучше и почему? Должен ли я использовать paint или paintComponent?

Пожалуйста, постарайтесь сохранить ответ простым, спасибо.

4b9b3361

Ответ 1

Цитата из документации метода paint()

Этот метод фактически делегирует работу живописи трем защищенным методам: paintComponent, paintBorder и paintChildren.    ... Подкласс, который просто хочет специализировать метод рисования делегата (внешний вид), должен просто переопределить paintComponent.

Похоже, что метод paint() на самом деле рисует компонент, включая границу и детей. Если вы хотите настроить внешний вид компонента, исключая границу и дочерние элементы, вы используете paintComponent().

http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#paint(java.awt.Graphics)

Ответ 2

Вообще говоря, при рисовании в Swing рекомендуется переопределить paintComponent.

Существует несколько причин, по которым на нижнем слое написано paintComponent, что означает, что вы случайно не уничтожите какие-либо компоненты, которые были отобраны во время процесса рисования - это очень часто происходит для людей, которые отправляют сюда.

Есть несколько раз, когда вам может потребоваться переопределить paint, но я всегда предлагаю вам сначала попробовать работать с paintComponent.

Отъезд