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

1

Я начинающий программист на Java, и мне сложно найти реальную разницу между функционированием метода paint() и repaint().
Также в некоторых программах, которые я изучил, я нашел paint() и repaint() взаимозаменяемыми. Может кто-нибудь объяснить разницу? спасибо

Теги:
swing

4 ответа

6
Лучший ответ

Предполагая, что вы ссылаетесь на метод void paint(Graphics g) который объявлен в классе Component:

Этот метод paint вызывается автоматически, всякий раз, когда необходимо нарисовать (части) компонента. Например, когда окно было затруднено другим окном, а затем снова становится видимым: диспетчер окон определит это и вызовет paint на компоненте верхнего уровня (например, в кадре), и этот вызов перейдет к фактическому "дну" "компоненты (например, кнопка). Объект Graphics который передается этому методу, предоставляется диспетчером Window и соответствует области на экране, где компонент должен быть окрашен. (И этот объект Graphics действителен только во время метода paint).

В отличие от этого, repaint() просто запускает новый процесс рисования. Он сообщает системе: "Пожалуйста, позвоните paint на этот компонент как можно скорее". Вы можете вызвать этот метод вручную. И вы можете назвать это freuqently: призывы к repaint объединяются. Это означает, что, когда вы выдаете много вызовов для repaint за короткий промежуток времени, эти вызовы могут быть суммированы и могут в конечном итоге вызвать только один вызов для paint.

2

Метод paint не следует вызывать непосредственно, поскольку состояние javadoc:

Вызывается Swing для рисования компонентов. Приложения не должны вызывать краску напрямую, но вместо этого следует использовать метод repaint для планирования компонента для перерисовки.

Вместо этого следует использовать метод repaint если вы хотите, чтобы компонент был перекрашен (перерисован). Javadoc также ссылается на следующую документацию: Картина в AWT и Swing

0

Метод paint() содержит инструкции по рисованию конкретного компонента.

Метод repaint(), который нельзя переопределить, более конкретен: он контролирует процесс update() для paint(). Вы должны вызвать этот метод, если хотите, чтобы компонент перекрашивал себя или менял внешний вид (но не размер).

0

paint() вызывается автоматически во время выполнения. Если вы хотите вызвать paint() вручную (снова), то используется repaint().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню