|
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.