模块 java.desktop

接口 Painter<T>

类型参数:
T - 配置参数的类型
所有已知的实现类:
AbstractRegionPainter

public interface Painter<T>

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

Painter s 只是 Java2D 代码的封装,使得重用现有 Painter s 或将它们组合在一起变得相当简单。此接口的实现编写起来也很简单,因此如果您找不到满足您需要的 Painter,您可以轻松编写一个。编写 Painter 需要 Java2D 知识。

可以使用类型参数创建 Painterpaint 方法中需要此类型。例如,您可能希望编写一个仅适用于 Component 子类的 Painter。在这种情况下,当声明 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 g, T object, int width, int height)
    呈现给定的 Graphics2D 对象。
  • 方法详情

    • paint

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

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

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

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

      通常,为了提高可重用性,大多数标准 Painter 都会忽略此参数。因此,它们可以在任何上下文中重复使用。 object 可能为空。如果对象参数为 null,实现不得抛出 NullPointerException。

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

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

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