## org.jfree.chart.annotations
Class XYPointerAnnotation

    java.lang.Object
      org.jfree.chart.annotations.AbstractAnnotation
          org.jfree.chart.annotations.AbstractXYAnnotation
              org.jfree.chart.annotations.XYTextAnnotation
                  org.jfree.chart.annotations.XYPointerAnnotation

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, Annotation, XYAnnotation, org.jfree.util.PublicCloneable

    public class XYPointerAnnotation

extends XYTextAnnotation
implements java.lang.Cloneable, org.jfree.util.PublicCloneable, java.io.Serializable

An arrow and label that can be placed on an `XYPlot`. The arrow is drawn at a user-definable angle so that it points towards the (x, y) location for the annotation.

The arrow length (and its offset from the (x, y) location) is controlled by the tip radius and the base radius attributes. Imagine two circles around the (x, y) coordinate: the inner circle defined by the tip radius, and the outer circle defined by the base radius. Now, draw the arrow starting at some point on the outer circle (the point is determined by the angle), with the arrow tip being drawn at a corresponding point on the inner circle.

See Also:
  Serialized Form

Field Summary
`static double` `DEFAULT_ARROW_LENGTH` The default arrow length (in Java2D units).
`static double` `DEFAULT_ARROW_WIDTH` The default arrow width (in Java2D units).
`static double` `DEFAULT_BASE_RADIUS` The default base radius (in Java2D units).
`static double` `DEFAULT_LABEL_OFFSET` The default label offset (in Java2D units).
`static double` `DEFAULT_TIP_RADIUS` The default tip radius (in Java2D units).

Fields inherited from class org.jfree.chart.annotations.XYTextAnnotation
`DEFAULT_FONT, DEFAULT_PAINT, DEFAULT_ROTATION_ANCHOR, DEFAULT_ROTATION_ANGLE, DEFAULT_TEXT_ANCHOR`

Constructor Summary
`XYPointerAnnotation(java.lang.String label, double x, double y, double angle)` Creates a new label and arrow annotation.

Method Summary
`java.lang.Object` `clone()` Returns a clone of the annotation.
`void` `draw(java.awt.Graphics2D g2, XYPlot plot, java.awt.geom.Rectangle2D dataArea, ValueAxis domainAxis, ValueAxis rangeAxis, int rendererIndex, PlotRenderingInfo info)` Draws the annotation.
`boolean` `equals(java.lang.Object obj)` Tests this annotation for equality with an arbitrary object.
`double` `getAngle()` Returns the angle of the arrow.
`double` `getArrowLength()` Returns the arrow length.
`java.awt.Paint` `getArrowPaint()` Returns the paint used for the arrow.
`java.awt.Stroke` `getArrowStroke()` Returns the stroke used to draw the arrow line.
`double` `getArrowWidth()` Returns the arrow width.
`double` `getBaseRadius()` Returns the base radius.
`double` `getLabelOffset()` Returns the label offset.
`double` `getTipRadius()` Returns the tip radius.
`int` `hashCode()` Returns a hash code for this instance.
`void` `setAngle(double angle)` Sets the angle of the arrow and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setArrowLength(double length)` Sets the arrow length and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setArrowPaint(java.awt.Paint paint)` Sets the paint used for the arrow and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setArrowStroke(java.awt.Stroke stroke)` Sets the stroke used to draw the arrow line and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setArrowWidth(double width)` Sets the arrow width and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setBaseRadius(double radius)` Sets the base radius and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setLabelOffset(double offset)` Sets the label offset (from the arrow base, continuing in a straight line, in Java2D units) and sends an `AnnotationChangeEvent` to all registered listeners.
`void` `setTipRadius(double radius)` Sets the tip radius and sends an `AnnotationChangeEvent` to all registered listeners.

Methods inherited from class org.jfree.chart.annotations.XYTextAnnotation
`getBackgroundPaint, getFont, getOutlinePaint, getOutlineStroke, getPaint, getRotationAnchor, getRotationAngle, getText, getTextAnchor, getX, getY, isOutlineVisible, setBackgroundPaint, setFont, setOutlinePaint, setOutlineStroke, setOutlineVisible, setPaint, setRotationAnchor, setRotationAngle, setText, setTextAnchor, setX, setY`

Methods inherited from class org.jfree.chart.annotations.AbstractXYAnnotation
`addEntity, getToolTipText, getURL, setToolTipText, setURL`

Methods inherited from class org.jfree.chart.annotations.AbstractAnnotation
`addChangeListener, fireAnnotationChanged, getNotify, hasListener, notifyListeners, removeChangeListener, setNotify`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.jfree.chart.annotations.Annotation
`addChangeListener, removeChangeListener`

Field Detail

### DEFAULT_TIP_RADIUS

    public static final double DEFAULT_TIP_RADIUS

  The default tip radius (in Java2D units).

  See Also:
    Constant Field Values

### DEFAULT_BASE_RADIUS

    public static final double DEFAULT_BASE_RADIUS

  The default base radius (in Java2D units).

  See Also:
    Constant Field Values

### DEFAULT_LABEL_OFFSET

    public static final double DEFAULT_LABEL_OFFSET

  The default label offset (in Java2D units).

  See Also:
    Constant Field Values

### DEFAULT_ARROW_LENGTH

    public static final double DEFAULT_ARROW_LENGTH

  The default arrow length (in Java2D units).

  See Also:
    Constant Field Values

### DEFAULT_ARROW_WIDTH

    public static final double DEFAULT_ARROW_WIDTH

  The default arrow width (in Java2D units).

  See Also:
    Constant Field Values

Constructor Detail

### XYPointerAnnotation

    public XYPointerAnnotation(java.lang.String label,
                               double x,
                               double y,
                               double angle)

  Creates a new label and arrow annotation.

  Parameters:
    `label` - the label (`null` permitted).
    `x` - the x-coordinate (measured against the chart's domain axis).
    `y` - the y-coordinate (measured against the chart's range axis).
    `angle` - the angle of the arrow's line (in radians).

Method Detail

### getAngle

    public double getAngle()

  Returns the angle of the arrow.

  Returns:
    The angle (in radians).
  See Also:
    `setAngle(double)`

### setAngle

    public void setAngle(double angle)

  Sets the angle of the arrow and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `angle` - the angle (in radians).
  See Also:
    `getAngle()`

### getTipRadius

    public double getTipRadius()

  Returns the tip radius.

  Returns:
    The tip radius (in Java2D units).
  See Also:
    `setTipRadius(double)`

### setTipRadius

    public void setTipRadius(double radius)

  Sets the tip radius and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `radius` - the radius (in Java2D units).
  See Also:
    `getTipRadius()`

### getBaseRadius

    public double getBaseRadius()

  Returns the base radius.

  Returns:
    The base radius (in Java2D units).
  See Also:
    `setBaseRadius(double)`

### setBaseRadius

    public void setBaseRadius(double radius)

  Sets the base radius and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `radius` - the radius (in Java2D units).
  See Also:
    `getBaseRadius()`

### getLabelOffset

    public double getLabelOffset()

  Returns the label offset.

  Returns:
    The label offset (in Java2D units).
  See Also:
    `setLabelOffset(double)`

### setLabelOffset

    public void setLabelOffset(double offset)

  Sets the label offset (from the arrow base, continuing in a straight line, in Java2D units) and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `offset` - the offset (in Java2D units).
  See Also:
    `getLabelOffset()`

### getArrowLength

    public double getArrowLength()

  Returns the arrow length.

  Returns:
    The arrow length.
  See Also:
    `setArrowLength(double)`

### setArrowLength

    public void setArrowLength(double length)

  Sets the arrow length and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `length` - the length.
  See Also:
    `getArrowLength()`

### getArrowWidth

    public double getArrowWidth()

  Returns the arrow width.

  Returns:
    The arrow width (in Java2D units).
  See Also:
    `setArrowWidth(double)`

### setArrowWidth

    public void setArrowWidth(double width)

  Sets the arrow width and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `width` - the width (in Java2D units).
  See Also:
    `getArrowWidth()`

### getArrowStroke

    public java.awt.Stroke getArrowStroke()

  Returns the stroke used to draw the arrow line.

  Returns:
    The arrow stroke (never `null`).
  See Also:
    `setArrowStroke(Stroke)`

### setArrowStroke

    public void setArrowStroke(java.awt.Stroke stroke)

  Sets the stroke used to draw the arrow line and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `stroke` - the stroke (`null` not permitted).
  See Also:
    `getArrowStroke()`

### getArrowPaint

    public java.awt.Paint getArrowPaint()

  Returns the paint used for the arrow.

  Returns:
    The arrow paint (never `null`).
  See Also:
    `setArrowPaint(Paint)`

### setArrowPaint

    public void setArrowPaint(java.awt.Paint paint)

  Sets the paint used for the arrow and sends an `AnnotationChangeEvent` to all registered listeners.

  Parameters:
    `paint` - the arrow paint (`null` not permitted).
  See Also:
    `getArrowPaint()`

### draw

    public void draw(java.awt.Graphics2D g2,
                     XYPlot plot,
                     java.awt.geom.Rectangle2D dataArea,
                     ValueAxis domainAxis,
                     ValueAxis rangeAxis,
                     int rendererIndex,
                     PlotRenderingInfo info)

  Draws the annotation.

  Specified by:
    `draw` in interface `XYAnnotation`
  Overrides:
    `draw` in class `XYTextAnnotation`
  Parameters:
    `g2` - the graphics device.
    `plot` - the plot.
    `dataArea` - the data area.
    `domainAxis` - the domain axis.
    `rangeAxis` - the range axis.
    `rendererIndex` - the renderer index.
    `info` - the plot rendering info.

### equals

    public boolean equals(java.lang.Object obj)

  Tests this annotation for equality with an arbitrary object.

  Overrides:
    `equals` in class `XYTextAnnotation`
  Parameters:
    `obj` - the object (`null` permitted).
  Returns:
    `true` or `false`.

### hashCode

    public int hashCode()

  Returns a hash code for this instance.

  Overrides:
    `hashCode` in class `XYTextAnnotation`
  Returns:
    A hash code.

### clone

    public java.lang.Object clone()
                           throws java.lang.CloneNotSupportedException

  Returns a clone of the annotation.

  Specified by:
    `clone` in interface `org.jfree.util.PublicCloneable`
  Overrides:
    `clone` in class `XYTextAnnotation`
  Returns:
    A clone.
  Throws:
    `java.lang.CloneNotSupportedException` - if the annotation can't be cloned.