Module  java.desktop
软件包  javax.swing

Interface Painter<T>

  • 所有已知实现类:
    AbstractRegionPainter


    public interface Painter<T>

    绘画代表。 Painter界面正好定义了一个方法, paint 它用于开发人员可以更改组件的绘图程序的情况,而无需使用子类化组件。 在做任何形式的绘画代表团时也是一般有用的。

    Painter是Java2D代码的简单封装,并且重用现有的Painter或将它们组合在一起是相当微不足道的。 这个接口的实现也很简单,所以如果你找不到所需的Painter ,你可以用最少的努力写一个。 编写一个Painter需要Java2D的知识。

    可以使用类型参数创建A 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
    • 方法详细信息

      • paint

        void paint​(Graphics2D g,
                   T object,
                   int width,
                   int height)

        渲染给给定的Graphics2D对象。 该方法的实现可能会修改Graphics2D状态,并且在完成后不需要恢复该状态。 在大多数情况下,建议呼叫者传递一个临时图形对象。 Graphics2D绝对不能为空。

        图形对象上的状态可以通过paint方法来实现,但可能不是。 例如,在图形上设置抗锯齿渲染提示可以由或可能不被Painter实现所尊重。

        提供的对象参数充当可选配置参数。 例如,它可以是类型Component 一个Painter ,期望它可以从该Component读取状态并使用状态进行绘画。 例如,一个实现可以读取backgroundColor并使用它。

        一般来说,为了提高可重用性,大多数标准Painter忽略此参数。 因此,它们可以在任何情况下重复使用。 object可能为null。 如果对象参数为空,则实现不能抛出NullPointerException。

        最后, widthheight参数指定Painter应该绘制的宽度和高度。 更具体地说,指定的宽度和高度指示画家应该在该宽度和高度内完全绘制。 g参数上的任何指定的剪辑将进一步限制该区域。

        例如,假设我有一个绘制渐变的Painter实现。 渐变从白色变成黑色。 它“延伸”填满绘画区域。 因此,如果我使用这个Painter绘制一个500×500的区域,最左边的区域将是黑色,最右边的区域将是白色的,并且之间将画一个平滑的渐变。 那么我可以在没有修改的情况下重新使用Painter来绘制20x20的区域。 这个区域也将在左边是黑色,右边是白色,并且之间画一个平滑的渐变。

        参数
        g - 要渲染的Graphics2D。 这不能为空。
        object - 可选配置参数。 这可能是空的。
        width - 要涂漆的区域的宽度。
        height - 要涂漆的面积的高度。