Paint() и repaint() в Java
Я провел, возможно, последние два часа, просматривая и просматривая эти методы и класс Graphics, и, может быть, я глупый, ха-ха, но я просто не понимаю их. Для чего они? Я понимаю, что они предполагают перерисовку или обновление компонентов на экране, но я никогда не понимал, почему это требуется (я новичок в этом). Например, если я перемещаю JLabel по экрану, вызов setLocation() перемещает его просто отлично. Это сценарий, в котором repaint() не требуется? В каких сценариях это полезно и почему?
Извините, если вы чувствуете, что это вопрос, который можно решить с помощью функции поиска, но по какой-то причине я его не получаю.
Ответы
Ответ 1
Разница между методом Paint() и Repaint()
Paint():
В этом методе содержатся инструкции по рисованию этого компонента. На самом деле, в Swing вы должны изменить paintComponent() вместо paint(), поскольку paint вызывает paintBorder(), paintComponent() и paintChildren(). Вы не должны вызывать этот метод напрямую, вместо этого вы должны вызвать repaint().
Repaint():
Этот метод нельзя переопределить. Он контролирует цикл update() → paint(). Вы должны вызвать этот метод, чтобы компонент мог перекрасить себя. Если вы сделали что-либо, чтобы изменить внешний вид компонента, но не его размер (например, изменение цвета, анимация и т.д.), Вызовите этот метод.
Ответ 2
Метод paint()
поддерживает рисование через объект Graphics.
Метод repaint()
используется для вызова paint()
для потока рисования AWT.
Ответ 3
Не нужно переписывать, если вам не нужно отображать что-то конкретное на компоненте. "Что-то конкретное" означает все, что не предусмотрено внутренним инструментом инструментария для окон, который вы используете.