模块  java.desktop
软件包  javax.swing

Interface Painter<T>

  • 所有已知实现类:
    AbstractRegionPainter

    public interface Painter<T>

    绘画代表。 Painter接口只定义了一个方法, paint 它用于开发人员可以更改组件的绘制例程而无需使用子类化组件的情况。 在进行任何形式的绘画授权时,它通常也很有用。

    Painter s只是Java2D代码的封装,使重用现有的Painter或将它们组合在一起变得相当简单。 这个接口的实现也很容易编写,这样如果你找不到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
    • 方法详细信息

      • paint

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

        呈现给定的Graphics2D对象。 此方法的实现可能会变量Graphics2D上的Graphics2D ,并且不需要在完成时恢复该状态。 在大多数情况下,建议调用者传入临时图形对象。 Graphics2D绝不能为空。

        图形对象上的状态可能受到paint方法的paint ,但可能不是。 例如, Painter实现可能会也可能不会遵守在图形上设置抗锯齿渲染提示。

        提供的对象参数充当可选配置参数。 例如,它可以是Component类型。 一个Painter的预期则完全可以从阅读状态Component和使用状态的画。 例如,实现可以读取backgroundColor并使用它。

        通常,为了增强可重用性,大多数标准Painter忽略此参数。 因此,它们可以在任何情况下重复使用。 object可能为null。 如果object参数为null,则实现不得抛出NullPointerException。

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

        例如,假设我有一个绘制渐变的Painter实现。 渐变从白色变为黑色。 它“伸展”以填充绘画区域。 因此,如果我使用这个Painter绘制一个500 x 500区域,最左边将是黑色,最右边将是白色,并且之间将绘制平滑渐变。 然后,我可以在不进行修改的情况下重复使用Painter来绘制尺寸为20x20的区域。 这个区域左边是黑色,右边是白色,两者之间是平滑的渐变。

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