Interface Painter<T>
- Параметры типа:
T— тип параметра конфигурации
- Все известные реализующие классы:
AbstractRegionPainter
public interface Painter<T>
Делегат для рисования. Интерфейс Painter определяет ровно один метод — paint. Он используется в ситуациях, когда разработчик может изменить процедуру рисования компонента, не прибегая к созданию подкласса компонента. Он также полезен в общем случае при любом делегировании рисования.
Объекты Painter представляют собой простые инкапсуляции кода Java2D и позволяют легко повторно использовать существующие объекты Painter или объединять их. Реализации этого интерфейса также очень просто написать: если вы не можете найти объект Painter, который выполняет нужную вам задачу, его можно создать с минимальными усилиями. Для написания объекта Painter требуется знание Java2D.
Объект Painter может быть создан с параметром типа. Этот тип будет использоваться в методе paint. Например, может потребоваться написать объект Painter, который работает только с подклассами Component. В этом случае при объявлении объекта Painter можно указать, что ему требуется объект Component, что позволит обеспечить типобезопасность метода рисования. Например:
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 и не обязаны восстанавливать его по завершении работы. В большинстве случаев вызывающему коду рекомендуется передавать временный графический объект. Объект Graphics2D никогда не должен быть null.
Метод paint может учитывать состояние графического объекта, но это не гарантируется. Например, реализация объекта Painter может как учитывать, так и не учитывать установленную для графического объекта подсказку визуализации сглаживания.
Параметр object служит необязательным аргументом конфигурации. Например, он может иметь тип Component. Тогда объект Painter, рассчитанный на такой параметр, может считывать состояние из объекта Component и использовать его при рисовании. Например, реализация может считывать backgroundColor и использовать его.
Как правило, для повышения повторного использования большинство стандартных объектов Painter игнорируют этот параметр. Благодаря этому их можно повторно использовать в любом контексте. Параметр object может быть равен null. Реализации не должны выбрасывать NullPointerException, если параметр object равен null.
Наконец, аргументы width и height задают ширину и высоту области, в которой объект Painter должен выполнять рисование. Точнее, указанные ширина и высота означают, что рисование должно полностью помещаться в эту область. Любая заданная область отсечения параметра g дополнительно ограничивает эту область.
Например, предположим, что у меня есть реализация Painter, которая рисует градиент от белого к чёрному. Градиент «растягивается», заполняя область рисования. Поэтому, если я использую этот объект Painter для рисования в области размером 500 x 500, левый край будет чёрным, правый — белым, а между ними будет плавный градиент. Затем я смогу без изменений использовать этот объект 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/Painter.html