Интерфейс Painter<T>
- Все известные реализующие классы:
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) |
Отображает в заданном объекте |
Методы
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, 2020, 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/11/docs/api/java.desktop/javax/swing/Painter.html