Интерфейс 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, и не обязаны восстановить это состояние по завершении. В большинстве случаев рекомендуется, чтобы вызывающая сторона передавала объект Graphics, предназначенный для временного использования. Graphics2D не должен быть null.
Состояние объекта Graphics может быть учтено методом paint, но не обязательно. Например, установка подсказки рендеринга antialiasing в графическом объекте может или не может быть учтена реализацией 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, 2023, 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/21/docs/api/java.desktop/javax/swing/Painter.html