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 } }
此接口不保证线路安全。
Modifier and Type | Method and Description |
---|---|
void |
paint(Graphics2D g, T object, int width, int height)
给出给定的 Graphics2D 对象。
|
void paint(Graphics2D g, T object, int width, int height)
给予给定的Graphics2D
对象。 此方法的实现可能会修改Graphics2D
上的Graphics2D
,并且在完成后不需要恢复该状态。 在大多数情况下,建议呼叫者传递一个临时图形对象。 Graphics2D
永远不能为空。
图形对象上的状态可能会被paint
方法所paint
,但可能不是。 例如,设置在显卡的抗锯齿呈现提示可能会或可能不会被尊重Painter
实施。
提供的对象参数充当可选配置参数。 例如,它可以是Component
。 A Painter
,期望它可以从该Component
读取状态并使用状态进行绘画。 例如,一个实现可以读取backgroundColor并使用它。
一般来说,为了提高可重用性,大多数标准的Painter
忽略此参数。 因此,它们可以在任何情况下重复使用。 object
可能为null。 如果对象参数为空,则实现不能抛出NullPointerException。
最后, width
和height
参数指定Painter
应该绘制的宽度和高度。 更具体地说,指定的宽度和高度指示画家应该在该宽度和高度内完全绘制。 g
参数上的任何指定剪辑将进一步限制该区域。
例如,假设我有一个绘制渐变的Painter
实现。 渐变从白色变成黑色。 它“延伸”填满绘画区域。 因此,如果我使用这个Painter
绘制一个500×500的区域,最左边的区域将是黑色,最右边是白色,并且之间将画一个平滑的渐变。 我可以不用修改,重用Painter
画一个20x20的区域。 这个区域也将在左边是黑色,右边是白色,并且之间画一个平滑的渐变。
g
- 要呈现的Graphics2D。
这不能为空。
object
- 可选配置参数。
这可能是空的。
width
- 要涂漆的区域的宽度。
height
- 要涂漆的面积的高度。