Spec-Zone.ru › OpenJDK 17

Интерфейс Painter

Все известные реализующие классы:
AbstractRegionPainter
public interface Painter<T>

Делегат рисования. Интерфейс Painter определяет ровно один метод, paint. Он используется в ситуациях, когда разработчик может изменить процедуру рисования компонента, не прибегая к наследованию компонента. Он также полезен в общем случае при делегировании рисования.

Painter — это просто оболочки кода Java2D и позволяют довольно просто повторно использовать существующие Painter или комбинировать их вместе. Реализации этого интерфейса также легко писать, так что если вы не можете найти Painter, который делает то, что вам нужно, вы можете написать его с минимальными усилиями. Написание Painter требует знания Java2D.

Painter может быть создан с типом параметра. Этот тип будет ожидаться в методе paint. Например, вы можете написать Painter, который работает только с подклассами Component. В этом случае, когда Painter объявлен, вы можете объявить, что он требует Component, позволяя методу paint быть безопасным по типу. Пример:

 
 Painter<Component> p = new Painter<Component>() {
     public void paint(Graphics2D g, Component c, int width, int height) {
         g.setColor(c.getBackground());
         //and so forth
     }
 }
 
 

Этот интерфейс не гарантирует потоковой безопасности.

С:
1.7

Краткое описание методов

Модификатор и тип Метод Описание
void paint(Graphics2D g, T object, int width, int height)
Отрисовывает в заданный объект Graphics2D.

Подробное описание методов

paint

void paint(Graphics2D g, T object, int width, int height)

Отрисовывает в заданный объект Graphics2D. Реализации этого метода могут изменять состояние в Graphics2D, и не обязаны восстанавливать это состояние по завершении. В большинстве случаев рекомендуется передать вызывающему объекту объект графики для временного использования. Graphics2D не должен быть null.

Состояние объекта графики может учитываться методом paint, но может и не учитываться. Например, установка подсказки рендеринга сглаживания на графике может или не может учитываться реализацией Painter.

Передаваемый параметр объекта используется в качестве необязательного параметра конфигурации. Например, он может быть типа Component. Painter который его ожидает, может затем прочитать состояние из этого Component и использовать состояние для рисования. Например, реализация может прочитать backgroundColor и использовать его.

В целом, для повышения повторного использования большинство стандартных Painter игнорируют этот параметр. Таким образом, они могут быть повторно использованы в любом контексте. object может быть null. Реализации не должны выбрасывать NullPointerException, если параметр объекта равен null.

Наконец, параметры width и height указывают ширину и высоту, в которые Painter должен выполнить рисование. Более конкретно, указанная ширина и высота сообщают рисовальщику, что он должен рисовать полностью в пределах этой ширины и высоты. Любой указанный обрез объекта g дополнительно ограничит область.

Например, предположим, что у меня есть реализация Painter , которая рисует градиент. Градиент переходит от белого к черному. Он "растягивается", чтобы заполнить область рисования. Таким образом, если я использую этот Painter для рисования области 500x500, самый левый край будет черным, самый правый — белым, а между ними будет нарисован плавный градиент. Я могу затем, без модификации, повторно использовать Painter для рисования области размером 20x20. Эта область также будет черной слева, белой справа, а между ними будет нарисован плавный градиент.

Параметры:
g - Graphics2D, в который нужно выполнить отрисовку. Не должен быть null.
object - необязательный параметр конфигурации. Может быть null.
width - ширина области для рисования.
height - высота области для рисования.

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/Painter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API