org.jfree.chart

## Class JFreeChart

- java.lang.Object
- - org.jfree.chart.JFreeChart

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.EventListener, PlotChangeListener, TitleChangeListener, Drawable

      public class JFreeChart
      extends java.lang.Object
      implements Drawable, TitleChangeListener, PlotChangeListener, java.io.Serializable, java.lang.Cloneable

  A chart class implemented using the Java 2D APIs. The current version supports bar charts, line charts, pie charts and xy plots (including time series data).

  JFreeChart coordinates several objects to achieve its aim of being able to draw a chart on a Java 2D graphics device: a list of `Title` objects (which often includes the chart's legend), a `Plot` and a `Dataset` (the plot in turn manages a domain axis and a range axis).

  You should use a `ChartPanel` to display a chart in a GUI.

  The `ChartFactory` class contains static methods for creating 'ready-made' charts.

  See Also:
    `ChartPanel`, `ChartFactory`, `Title`, `Plot`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.awt.Image` | `DEFAULT_BACKGROUND_IMAGE` The default background image.
    `static int` | `DEFAULT_BACKGROUND_IMAGE_ALIGNMENT` The default background image alignment.
    `static float` | `DEFAULT_BACKGROUND_IMAGE_ALPHA` The default background image alpha.
    `static java.awt.Paint` | `DEFAULT_BACKGROUND_PAINT` The default background color.
    `static java.awt.Font` | `DEFAULT_TITLE_FONT` The default font for titles.
    `static ProjectInfo` | `INFO` Information about the project.
    `static java.awt.RenderingHints.Key` | `KEY_SUPPRESS_SHADOW_GENERATION` The key for a rendering hint that can suppress the generation of a shadow effect when drawing the chart.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JFreeChart(Plot plot)` Creates a new chart based on the supplied plot.
    `JFreeChart(java.lang.String title, java.awt.Font titleFont, Plot plot, boolean createLegend)` Creates a new chart with the given title and plot.
    `JFreeChart(java.lang.String title, Plot plot)` Creates a new chart with the given title and plot.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addChangeListener(ChartChangeListener listener)` Registers an object for notification of changes to the chart.
    `void` | `addLegend(LegendTitle legend)` Adds a legend to the plot and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `addProgressListener(ChartProgressListener listener)` Registers an object for notification of progress events relating to the chart.
    `void` | `addSubtitle(int index, Title subtitle)` Adds a subtitle at a particular position in the subtitle list, and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `addSubtitle(Title subtitle)` Adds a chart subtitle, and notifies registered listeners that the chart has been modified.
    `void` | `clearSubtitles()` Clears all subtitles from the chart and sends a `ChartChangeEvent` to all registered listeners.
    `java.lang.Object` | `clone()` Clones the object, and takes care of listeners.
    `java.awt.image.BufferedImage` | `createBufferedImage(int width, int height)` Creates and returns a buffered image into which the chart has been drawn.
    `java.awt.image.BufferedImage` | `createBufferedImage(int width, int height, ChartRenderingInfo info)` Creates and returns a buffered image into which the chart has been drawn.
    `java.awt.image.BufferedImage` | `createBufferedImage(int imageWidth, int imageHeight, double drawWidth, double drawHeight, ChartRenderingInfo info)` Creates and returns a buffered image into which the chart has been drawn.
    `java.awt.image.BufferedImage` | `createBufferedImage(int width, int height, int imageType, ChartRenderingInfo info)` Creates and returns a buffered image into which the chart has been drawn.
    `void` | `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area)` Draws the chart on a Java 2D graphics device (such as the screen or a printer).
    `void` | `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, ChartRenderingInfo info)` Draws the chart on a Java 2D graphics device (such as the screen or a printer).
    `void` | `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D chartArea, java.awt.geom.Point2D anchor, ChartRenderingInfo info)` Draws the chart on a Java 2D graphics device (such as the screen or a printer).
    `protected EntityCollection` | `drawTitle(Title t, java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, boolean entities)` Draws a title.
    `boolean` | `equals(java.lang.Object obj)` Tests this chart for equality with another object.
    `void` | `fireChartChanged()` Sends a default `ChartChangeEvent` to all registered listeners.
    `boolean` | `getAntiAlias()` Returns a flag that indicates whether or not anti-aliasing is used when the chart is drawn.
    `java.awt.Image` | `getBackgroundImage()` Returns the background image for the chart, or `null` if there is no image.
    `int` | `getBackgroundImageAlignment()` Returns the background image alignment.
    `float` | `getBackgroundImageAlpha()` Returns the alpha-transparency for the chart's background image.
    `java.awt.Paint` | `getBackgroundPaint()` Returns the paint used for the chart background.
    `java.awt.Paint` | `getBorderPaint()` Returns the paint used to draw the chart border (if visible).
    `java.awt.Stroke` | `getBorderStroke()` Returns the stroke used to draw the chart border (if visible).
    `LegendTitle` | `getLegend()` Returns the legend for the chart, if there is one.
    `LegendTitle` | `getLegend(int index)` Returns the nth legend for a chart, or `null`.
    `RectangleInsets` | `getPadding()` Returns the padding between the chart border and the chart drawing area.
    `Plot` | `getPlot()` Returns the plot for the chart.
    `java.awt.RenderingHints` | `getRenderingHints()` Returns the collection of rendering hints for the chart.
    `Title` | `getSubtitle(int index)` Returns a chart subtitle.
    `int` | `getSubtitleCount()` Returns the number of titles for the chart.
    `java.util.List` | `getSubtitles()` Returns the list of subtitles for the chart.
    `java.lang.Object` | `getTextAntiAlias()` Returns the current value stored in the rendering hints table for `RenderingHints.KEY_TEXT_ANTIALIASING`.
    `TextTitle` | `getTitle()` Returns the main chart title.
    `XYPlot` | `getXYPlot()` Returns the plot cast as an `XYPlot`.
    `void` | `handleClick(int x, int y, ChartRenderingInfo info)` Handles a 'click' on the chart.
    `boolean` | `isBorderVisible()` Returns a flag that controls whether or not a border is drawn around the outside of the chart.
    `boolean` | `isNotify()` Returns a flag that controls whether or not change events are sent to registered listeners.
    `static void` | `main(java.lang.String[] args)` Prints information about JFreeChart to standard output.
    `protected void` | `notifyListeners(ChartChangeEvent event)` Sends a `ChartChangeEvent` to all registered listeners.
    `protected void` | `notifyListeners(ChartProgressEvent event)` Sends a `ChartProgressEvent` to all registered listeners.
    `void` | `plotChanged(PlotChangeEvent event)` Receives notification that the plot has changed, and passes this on to registered listeners.
    `void` | `removeChangeListener(ChartChangeListener listener)` Deregisters an object for notification of changes to the chart.
    `void` | `removeLegend()` Removes the first legend in the chart and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `removeProgressListener(ChartProgressListener listener)` Deregisters an object for notification of changes to the chart.
    `void` | `removeSubtitle(Title title)` Removes the specified subtitle and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setAntiAlias(boolean flag)` Sets a flag that indicates whether or not anti-aliasing is used when the chart is drawn.
    `void` | `setBackgroundImage(java.awt.Image image)` Sets the background image for the chart and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setBackgroundImageAlignment(int alignment)` Sets the background alignment.
    `void` | `setBackgroundImageAlpha(float alpha)` Sets the alpha-transparency for the chart's background image.
    `void` | `setBackgroundPaint(java.awt.Paint paint)` Sets the paint used to fill the chart background and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setBorderPaint(java.awt.Paint paint)` Sets the paint used to draw the chart border (if visible).
    `void` | `setBorderStroke(java.awt.Stroke stroke)` Sets the stroke used to draw the chart border (if visible).
    `void` | `setBorderVisible(boolean visible)` Sets a flag that controls whether or not a border is drawn around the outside of the chart.
    `void` | `setNotify(boolean notify)` Sets a flag that controls whether or not listeners receive `ChartChangeEvent` notifications.
    `void` | `setPadding(RectangleInsets padding)` Sets the padding between the chart border and the chart drawing area, and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setRenderingHints(java.awt.RenderingHints renderingHints)` Sets the rendering hints for the chart.
    `void` | `setSubtitles(java.util.List subtitles)` Sets the title list for the chart (completely replaces any existing titles) and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setTextAntiAlias(boolean flag)` Sets the value in the rendering hints table for `RenderingHints.KEY_TEXT_ANTIALIASING` to either `RenderingHints.VALUE_TEXT_ANTIALIAS_ON` or `RenderingHints.VALUE_TEXT_ANTIALIAS_OFF`, then sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setTextAntiAlias(java.lang.Object val)` Sets the value in the rendering hints table for `RenderingHints.KEY_TEXT_ANTIALIASING` and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setTitle(java.lang.String text)` Sets the chart title and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `setTitle(TextTitle title)` Sets the main title for the chart and sends a `ChartChangeEvent` to all registered listeners.
    `void` | `titleChanged(TitleChangeEvent event)` Receives notification that a chart title has changed, and passes this on to registered listeners.

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### INFO

          public static final ProjectInfo INFO

      Information about the project.

    - #### DEFAULT_TITLE_FONT

          public static final java.awt.Font DEFAULT_TITLE_FONT

      The default font for titles.

    - #### DEFAULT_BACKGROUND_PAINT

          public static final java.awt.Paint DEFAULT_BACKGROUND_PAINT

      The default background color.

    - #### DEFAULT_BACKGROUND_IMAGE

          public static final java.awt.Image DEFAULT_BACKGROUND_IMAGE

      The default background image.

    - #### DEFAULT_BACKGROUND_IMAGE_ALIGNMENT

          public static final int DEFAULT_BACKGROUND_IMAGE_ALIGNMENT

      The default background image alignment.
      See Also:
        Constant Field Values

    - #### DEFAULT_BACKGROUND_IMAGE_ALPHA

          public static final float DEFAULT_BACKGROUND_IMAGE_ALPHA

      The default background image alpha.
      See Also:
        Constant Field Values

    - #### KEY_SUPPRESS_SHADOW_GENERATION

          public static final java.awt.RenderingHints.Key KEY_SUPPRESS_SHADOW_GENERATION

      The key for a rendering hint that can suppress the generation of a shadow effect when drawing the chart. The hint value must be a Boolean.
      Since:
        1.0.16

  - ### Constructor Detail

    - #### JFreeChart

          public JFreeChart(Plot plot)

      Creates a new chart based on the supplied plot. The chart will have a legend added automatically, but no title (although you can easily add one later).
      Note that the `ChartFactory` class contains a range of static methods that will return ready-made charts, and often this is a more convenient way to create charts than using this constructor.
      Parameters:
        `plot` - the plot (`null` not permitted).

    - #### JFreeChart

          public JFreeChart(java.lang.String title,
                            Plot plot)

      Creates a new chart with the given title and plot. A default font (`DEFAULT_TITLE_FONT`) is used for the title, and the chart will have a legend added automatically.
      Note that the `ChartFactory` class contains a range of static methods that will return ready-made charts, and often this is a more convenient way to create charts than using this constructor.
      Parameters:
        `title` - the chart title (`null` permitted).
        `plot` - the plot (`null` not permitted).

    - #### JFreeChart

          public JFreeChart(java.lang.String title,
                            java.awt.Font titleFont,
                            Plot plot,
                            boolean createLegend)

      Creates a new chart with the given title and plot. The `createLegend` argument specifies whether or not a legend should be added to the chart.
      Note that the `ChartFactory` class contains a range of static methods that will return ready-made charts, and often this is a more convenient way to create charts than using this constructor.
      Parameters:
        `title` - the chart title (`null` permitted).
        `titleFont` - the font for displaying the chart title (`null` permitted).
        `plot` - controller of the visual representation of the data (`null` not permitted).
        `createLegend` - a flag indicating whether or not a legend should be created for the chart.

  - ### Method Detail

    - #### getRenderingHints

          public java.awt.RenderingHints getRenderingHints()

      Returns the collection of rendering hints for the chart.
      Returns:
        The rendering hints for the chart (never `null`).
      See Also:
        `setRenderingHints(RenderingHints)`

    - #### setRenderingHints

          public void setRenderingHints(java.awt.RenderingHints renderingHints)

      Sets the rendering hints for the chart. These will be added (using the `Graphics2D.addRenderingHints()` method) near the start of the `JFreeChart.draw()` method.
      Parameters:
        `renderingHints` - the rendering hints (`null` not permitted).
      See Also:
        `getRenderingHints()`

    - #### isBorderVisible

          public boolean isBorderVisible()

      Returns a flag that controls whether or not a border is drawn around the outside of the chart.
      Returns:
        A boolean.
      See Also:
        `setBorderVisible(boolean)`

    - #### setBorderVisible

          public void setBorderVisible(boolean visible)

      Sets a flag that controls whether or not a border is drawn around the outside of the chart.
      Parameters:
        `visible` - the flag.
      See Also:
        `isBorderVisible()`

    - #### getBorderStroke

          public java.awt.Stroke getBorderStroke()

      Returns the stroke used to draw the chart border (if visible).
      Returns:
        The border stroke.
      See Also:
        `setBorderStroke(Stroke)`

    - #### setBorderStroke

          public void setBorderStroke(java.awt.Stroke stroke)

      Sets the stroke used to draw the chart border (if visible).
      Parameters:
        `stroke` - the stroke.
      See Also:
        `getBorderStroke()`

    - #### getBorderPaint

          public java.awt.Paint getBorderPaint()

      Returns the paint used to draw the chart border (if visible).
      Returns:
        The border paint.
      See Also:
        `setBorderPaint(Paint)`

    - #### setBorderPaint

          public void setBorderPaint(java.awt.Paint paint)

      Sets the paint used to draw the chart border (if visible).
      Parameters:
        `paint` - the paint.
      See Also:
        `getBorderPaint()`

    - #### getPadding

          public RectangleInsets getPadding()

      Returns the padding between the chart border and the chart drawing area.
      Returns:
        The padding (never `null`).
      See Also:
        `setPadding(RectangleInsets)`

    - #### setPadding

          public void setPadding(RectangleInsets padding)

      Sets the padding between the chart border and the chart drawing area, and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `padding` - the padding (`null` not permitted).
      See Also:
        `getPadding()`

    - #### getTitle

          public TextTitle getTitle()

      Returns the main chart title. Very often a chart will have just one title, so we make this case simple by providing accessor methods for the main title. However, multiple titles are supported - see the `addSubtitle(Title)` method.
      Returns:
        The chart title (possibly `null`).
      See Also:
        `setTitle(TextTitle)`

    - #### setTitle

          public void setTitle(TextTitle title)

      Sets the main title for the chart and sends a `ChartChangeEvent` to all registered listeners. If you do not want a title for the chart, set it to `null`. If you want more than one title on a chart, use the `addSubtitle(Title)` method.
      Parameters:
        `title` - the title (`null` permitted).
      See Also:
        `getTitle()`

    - #### setTitle

          public void setTitle(java.lang.String text)

      Sets the chart title and sends a `ChartChangeEvent` to all registered listeners. This is a convenience method that ends up calling the `setTitle(TextTitle)` method. If there is an existing title, its text is updated, otherwise a new title using the default font is added to the chart. If `text` is `null` the chart title is set to `null`.
      Parameters:
        `text` - the title text (`null` permitted).
      See Also:
        `getTitle()`

    - #### addLegend

          public void addLegend(LegendTitle legend)

      Adds a legend to the plot and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `legend` - the legend (`null` not permitted).
      See Also:
        `removeLegend()`

    - #### getLegend

          public LegendTitle getLegend()

      Returns the legend for the chart, if there is one. Note that a chart can have more than one legend - this method returns the first.
      Returns:
        The legend (possibly `null`).
      See Also:
        `getLegend(int)`

    - #### getLegend

          public LegendTitle getLegend(int index)

      Returns the nth legend for a chart, or `null`.
      Parameters:
        `index` - the legend index (zero-based).
      Returns:
        The legend (possibly `null`).
      See Also:
        `addLegend(LegendTitle)`

    - #### removeLegend

          public void removeLegend()

      Removes the first legend in the chart and sends a `ChartChangeEvent` to all registered listeners.
      See Also:
        `getLegend()`

    - #### getSubtitles

          public java.util.List getSubtitles()

      Returns the list of subtitles for the chart.
      Returns:
        The subtitle list (possibly empty, but never `null`).
      See Also:
        `setSubtitles(List)`

    - #### setSubtitles

          public void setSubtitles(java.util.List subtitles)

      Sets the title list for the chart (completely replaces any existing titles) and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `subtitles` - the new list of subtitles (`null` not permitted).
      See Also:
        `getSubtitles()`

    - #### getSubtitleCount

          public int getSubtitleCount()

      Returns the number of titles for the chart.
      Returns:
        The number of titles for the chart.
      See Also:
        `getSubtitles()`

    - #### getSubtitle

          public Title getSubtitle(int index)

      Returns a chart subtitle.
      Parameters:
        `index` - the index of the chart subtitle (zero based).
      Returns:
        A chart subtitle.
      See Also:
        `addSubtitle(Title)`

    - #### addSubtitle

          public void addSubtitle(Title subtitle)

      Adds a chart subtitle, and notifies registered listeners that the chart has been modified.
      Parameters:
        `subtitle` - the subtitle (`null` not permitted).
      See Also:
        `getSubtitle(int)`

    - #### addSubtitle

          public void addSubtitle(int index,
                                  Title subtitle)

      Adds a subtitle at a particular position in the subtitle list, and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `index` - the index (in the range 0 to `getSubtitleCount()`).
        `subtitle` - the subtitle to add (`null` not permitted).
      Since:
        1.0.6

    - #### clearSubtitles

          public void clearSubtitles()

      Clears all subtitles from the chart and sends a `ChartChangeEvent` to all registered listeners.
      See Also:
        `addSubtitle(Title)`

    - #### removeSubtitle

          public void removeSubtitle(Title title)

      Removes the specified subtitle and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `title` - the title.
      See Also:
        `addSubtitle(Title)`

    - #### getPlot

          public Plot getPlot()

      Returns the plot for the chart. The plot is a class responsible for coordinating the visual representation of the data, including the axes (if any).
      Returns:
        The plot.

    - #### getXYPlot

          public XYPlot getXYPlot()

      Returns the plot cast as an `XYPlot`.

      NOTE: if the plot is not an instance of `XYPlot`, then a `ClassCastException` is thrown.

      Returns:
        The plot.
      See Also:
        `getPlot()`

    - #### getAntiAlias

          public boolean getAntiAlias()

      Returns a flag that indicates whether or not anti-aliasing is used when the chart is drawn.
      Returns:
        The flag.
      See Also:
        `setAntiAlias(boolean)`

    - #### setAntiAlias

          public void setAntiAlias(boolean flag)

      Sets a flag that indicates whether or not anti-aliasing is used when the chart is drawn.

      Anti-aliasing usually improves the appearance of charts, but is slower.

      Parameters:
        `flag` - the new value of the flag.
      See Also:
        `getAntiAlias()`

    - #### getTextAntiAlias

          public java.lang.Object getTextAntiAlias()

      Returns the current value stored in the rendering hints table for `RenderingHints.KEY_TEXT_ANTIALIASING`.
      Returns:
        The hint value (possibly `null`).
      Since:
        1.0.5
      See Also:
        `setTextAntiAlias(Object)`

    - #### setTextAntiAlias

          public void setTextAntiAlias(boolean flag)

      Sets the value in the rendering hints table for `RenderingHints.KEY_TEXT_ANTIALIASING` to either `RenderingHints.VALUE_TEXT_ANTIALIAS_ON` or `RenderingHints.VALUE_TEXT_ANTIALIAS_OFF`, then sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `flag` - the new value of the flag.
      Since:
        1.0.5
      See Also:
        `getTextAntiAlias()`, `setTextAntiAlias(Object)`

    - #### setTextAntiAlias

          public void setTextAntiAlias(java.lang.Object val)

      Sets the value in the rendering hints table for `RenderingHints.KEY_TEXT_ANTIALIASING` and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `val` - the new value (`null` permitted).
      Since:
        1.0.5
      See Also:
        `getTextAntiAlias()`, `setTextAntiAlias(boolean)`

    - #### getBackgroundPaint

          public java.awt.Paint getBackgroundPaint()

      Returns the paint used for the chart background.
      Returns:
        The paint (possibly `null`).
      See Also:
        `setBackgroundPaint(Paint)`

    - #### setBackgroundPaint

          public void setBackgroundPaint(java.awt.Paint paint)

      Sets the paint used to fill the chart background and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `paint` - the paint (`null` permitted).
      See Also:
        `getBackgroundPaint()`

    - #### getBackgroundImage

          public java.awt.Image getBackgroundImage()

      Returns the background image for the chart, or `null` if there is no image.
      Returns:
        The image (possibly `null`).
      See Also:
        `setBackgroundImage(Image)`

    - #### setBackgroundImage

          public void setBackgroundImage(java.awt.Image image)

      Sets the background image for the chart and sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `image` - the image (`null` permitted).
      See Also:
        `getBackgroundImage()`

    - #### getBackgroundImageAlignment

          public int getBackgroundImageAlignment()

      Returns the background image alignment. Alignment constants are defined in the `org.jfree.ui.Align` class in the JCommon class library.
      Returns:
        The alignment.
      See Also:
        `setBackgroundImageAlignment(int)`

    - #### setBackgroundImageAlignment

          public void setBackgroundImageAlignment(int alignment)

      Sets the background alignment. Alignment options are defined by the `Align` class.
      Parameters:
        `alignment` - the alignment.
      See Also:
        `getBackgroundImageAlignment()`

    - #### getBackgroundImageAlpha

          public float getBackgroundImageAlpha()

      Returns the alpha-transparency for the chart's background image.
      Returns:
        The alpha-transparency.
      See Also:
        `setBackgroundImageAlpha(float)`

    - #### setBackgroundImageAlpha

          public void setBackgroundImageAlpha(float alpha)

      Sets the alpha-transparency for the chart's background image. Registered listeners are notified that the chart has been changed.
      Parameters:
        `alpha` - the alpha value.
      See Also:
        `getBackgroundImageAlpha()`

    - #### isNotify

          public boolean isNotify()

      Returns a flag that controls whether or not change events are sent to registered listeners.
      Returns:
        A boolean.
      See Also:
        `setNotify(boolean)`

    - #### setNotify

          public void setNotify(boolean notify)

      Sets a flag that controls whether or not listeners receive `ChartChangeEvent` notifications.
      Parameters:
        `notify` - a boolean.
      See Also:
        `isNotify()`

    - #### draw

          public void draw(java.awt.Graphics2D g2,
                           java.awt.geom.Rectangle2D area)

      Draws the chart on a Java 2D graphics device (such as the screen or a printer).

      This method is the focus of the entire JFreeChart library.

      Specified by:
        `draw` in interface `Drawable`
      Parameters:
        `g2` - the graphics device.
        `area` - the area within which the chart should be drawn.

    - #### draw

          public void draw(java.awt.Graphics2D g2,
                           java.awt.geom.Rectangle2D area,
                           ChartRenderingInfo info)

      Draws the chart on a Java 2D graphics device (such as the screen or a printer). This method is the focus of the entire JFreeChart library.
      Parameters:
        `g2` - the graphics device.
        `area` - the area within which the chart should be drawn.
        `info` - records info about the drawing (null means collect no info).

    - #### draw

          public void draw(java.awt.Graphics2D g2,
                           java.awt.geom.Rectangle2D chartArea,
                           java.awt.geom.Point2D anchor,
                           ChartRenderingInfo info)

      Draws the chart on a Java 2D graphics device (such as the screen or a printer).

      This method is the focus of the entire JFreeChart library.

      Parameters:
        `g2` - the graphics device.
        `chartArea` - the area within which the chart should be drawn.
        `anchor` - the anchor point (in Java2D space) for the chart (`null` permitted).
        `info` - records info about the drawing (null means collect no info).

    - #### drawTitle

          protected EntityCollection drawTitle(Title t,
                                               java.awt.Graphics2D g2,
                                               java.awt.geom.Rectangle2D area,
                                               boolean entities)

      Draws a title. The title should be drawn at the top, bottom, left or right of the specified area, and the area should be updated to reflect the amount of space used by the title.
      Parameters:
        `t` - the title (`null` not permitted).
        `g2` - the graphics device (`null` not permitted).
        `area` - the chart area, excluding any existing titles (`null` not permitted).
        `entities` - a flag that controls whether or not an entity collection is returned for the title.
      Returns:
        An entity collection for the title (possibly `null`).

    - #### createBufferedImage

          public java.awt.image.BufferedImage createBufferedImage(int width,
                                                                  int height)

      Creates and returns a buffered image into which the chart has been drawn.
      Parameters:
        `width` - the width.
        `height` - the height.
      Returns:
        A buffered image.

    - #### createBufferedImage

          public java.awt.image.BufferedImage createBufferedImage(int width,
                                                                  int height,
                                                                  ChartRenderingInfo info)

      Creates and returns a buffered image into which the chart has been drawn.
      Parameters:
        `width` - the width.
        `height` - the height.
        `info` - carries back chart state information (`null` permitted).
      Returns:
        A buffered image.

    - #### createBufferedImage

          public java.awt.image.BufferedImage createBufferedImage(int width,
                                                                  int height,
                                                                  int imageType,
                                                                  ChartRenderingInfo info)

      Creates and returns a buffered image into which the chart has been drawn.
      Parameters:
        `width` - the width.
        `height` - the height.
        `imageType` - the image type.
        `info` - carries back chart state information (`null` permitted).
      Returns:
        A buffered image.

    - #### createBufferedImage

          public java.awt.image.BufferedImage createBufferedImage(int imageWidth,
                                                                  int imageHeight,
                                                                  double drawWidth,
                                                                  double drawHeight,
                                                                  ChartRenderingInfo info)

      Creates and returns a buffered image into which the chart has been drawn.
      Parameters:
        `imageWidth` - the image width.
        `imageHeight` - the image height.
        `drawWidth` - the width for drawing the chart (will be scaled to fit image).
        `drawHeight` - the height for drawing the chart (will be scaled to fit image).
        `info` - optional object for collection chart dimension and entity information.
      Returns:
        A buffered image.

    - #### handleClick

          public void handleClick(int x,
                                  int y,
                                  ChartRenderingInfo info)

      Handles a 'click' on the chart. JFreeChart is not a UI component, so some other object (for example, `ChartPanel`) needs to capture the click event and pass it onto the JFreeChart object. If you are not using JFreeChart in a client application, then this method is not required.
      Parameters:
        `x` - x-coordinate of the click (in Java2D space).
        `y` - y-coordinate of the click (in Java2D space).
        `info` - contains chart dimension and entity information (`null` not permitted).

    - #### addChangeListener

          public void addChangeListener(ChartChangeListener listener)

      Registers an object for notification of changes to the chart.
      Parameters:
        `listener` - the listener (`null` not permitted).
      See Also:
        `removeChangeListener(ChartChangeListener)`

    - #### removeChangeListener

          public void removeChangeListener(ChartChangeListener listener)

      Deregisters an object for notification of changes to the chart.
      Parameters:
        `listener` - the listener (`null` not permitted)
      See Also:
        `addChangeListener(ChartChangeListener)`

    - #### fireChartChanged

          public void fireChartChanged()

      Sends a default `ChartChangeEvent` to all registered listeners.

      This method is for convenience only.

    - #### notifyListeners

          protected void notifyListeners(ChartChangeEvent event)

      Sends a `ChartChangeEvent` to all registered listeners.
      Parameters:
        `event` - information about the event that triggered the notification.

    - #### addProgressListener

          public void addProgressListener(ChartProgressListener listener)

      Registers an object for notification of progress events relating to the chart.
      Parameters:
        `listener` - the object being registered.
      See Also:
        `removeProgressListener(ChartProgressListener)`

    - #### removeProgressListener

          public void removeProgressListener(ChartProgressListener listener)

      Deregisters an object for notification of changes to the chart.
      Parameters:
        `listener` - the object being deregistered.
      See Also:
        `addProgressListener(ChartProgressListener)`

    - #### notifyListeners

          protected void notifyListeners(ChartProgressEvent event)

      Sends a `ChartProgressEvent` to all registered listeners.
      Parameters:
        `event` - information about the event that triggered the notification.

    - #### titleChanged

          public void titleChanged(TitleChangeEvent event)

      Receives notification that a chart title has changed, and passes this on to registered listeners.
      Specified by:
        `titleChanged` in interface `TitleChangeListener`
      Parameters:
        `event` - information about the chart title change.

    - #### plotChanged

          public void plotChanged(PlotChangeEvent event)

      Receives notification that the plot has changed, and passes this on to registered listeners.
      Specified by:
        `plotChanged` in interface `PlotChangeListener`
      Parameters:
        `event` - information about the plot change.

    - #### equals

          public boolean equals(java.lang.Object obj)

      Tests this chart for equality with another object.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `obj` - the object (`null` permitted).
      Returns:
        A boolean.

    - #### main

          public static void main(java.lang.String[] args)

      Prints information about JFreeChart to standard output.
      Parameters:
        `args` - no arguments are honored.

    - #### clone

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

      Clones the object, and takes care of listeners. Note: caller shall register its own listeners on cloned graph.
      Overrides:
        `clone` in class `java.lang.Object`
      Returns:
        A clone.
      Throws:
        `java.lang.CloneNotSupportedException` - if the chart is not cloneable.