Интерфейс Painter<T>
- Параметры типа:
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. |
Подробное описание методов
paint
void paint(Graphics2D g, T object, int width, int height)
Отрисовывает в заданный объект Graphics2D. Реализации этого метода могут изменять состояние объекта Graphics2D, и не обязаны восстанавливать это состояние по завершении. В большинстве случаев рекомендуется, чтобы вызывающая сторона передавала объект графики scratch. Объект 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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/Painter.html