Spec-Zone .ru
спецификации, руководства, описания, API
|
paint
метод, который тогда вызывает paintComponent
, paintBorder
, и paintChildren
. Система вызовет это автоматически, когда компонент будет сначала нарисован, изменяется, или становится представленным, будучи скрытым другим окном.repaint
метод; не вызывайте paintComponent
непосредственно. Вызов repaint
заставляет подсистему рисования делать необходимые шаги, чтобы гарантировать что Ваш paintComponent
в подходящее время вызывается метод.repaint
позволяет Вам уменьшать прямоугольник отсечения компонента (раздел экрана, на который влияют, крася операции) так, чтобы рисование могло стать более эффективным. Мы использовали этот метод в moveSquare
метод, чтобы избежать перекрашивать разделы экрана, которые не изменились. Есть также версия без аргументов этого метода, который перекрасит всю площадь поверхности компонента.moveSquare
метод вызывает repaint
не однажды, но дважды. Первый вызов перекрашивает область компонента, где квадрат ранее был (наследованное поведение должно заполнить область текущим цветом фона.) Второй вызов красит область компонента, где квадрат в настоящий момент.repaint
многократно изнутри того же самого обработчика событий, но Swing возьмет ту информацию и перекрасит компонент только в одной работе.Graphics
парамать со строкой super.paintComponent(g)
как первая строка кода в Вашем paintComponent
переопределение. Если Вы не сделаете, то Ваш компонент будет ответственен за ручное рисование его фона. Можно экспериментировать с этим, комментируя ту строку и перекомпилировав, чтобы видеть, что фон больше не красится.RedSquare
class, приложение поддерживает объектно-ориентированный проект, который сохраняет paintComponent
метод MyPanel
class, свободный от помехи. Рисование все еще работает, потому что мы передали Graphics
объект прочь к красному квадрату, вызывая paintSquare(Graphics g)
метод. Имейте в виду, что имя этого метода является тем, которое мы создали с нуля; мы не переопределяем paintSquare
отовсюду выше в API Swing.