Интерфейс 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
}
} Данный интерфейс не гарантирует потокобезопасность.
Методы
| Модификатор и тип | Метод и описание |
|---|---|
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, если параметр object равен 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.