org.jfree.chart
Class JFreeChart

java.lang.Object
  |
  +--org.jfree.chart.JFreeChart
All Implemented Interfaces:
org.jfree.ui.Drawable, java.util.EventListener, JFreeChartConstants, LegendChangeListener, PlotChangeListener, java.io.Serializable, TitleChangeListener

public class JFreeChart
extends java.lang.Object
implements JFreeChartConstants, org.jfree.ui.Drawable, TitleChangeListener, LegendChangeListener, PlotChangeListener, java.io.Serializable

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 AbstractTitle objects, a Legend, a Plot and a Dataset (the plot in turn manages a horizontal axis and a vertical axis).

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

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

Author:
David Gilbert
See Also:
ChartPanel, ChartFactory, AbstractTitle, Legend, Plot, Serialized Form

Field Summary
static org.jfree.ui.about.ProjectInfo INFO
          Information about the project.
 
Fields inherited from interface org.jfree.chart.JFreeChartConstants
DEFAULT_BACKGROUND_IMAGE, DEFAULT_BACKGROUND_IMAGE_ALIGNMENT, DEFAULT_BACKGROUND_IMAGE_ALPHA, DEFAULT_BACKGROUND_PAINT, DEFAULT_TITLE_FONT
 
Constructor Summary
JFreeChart(Plot plot)
          Constructs a chart.
JFreeChart(java.lang.String title, java.awt.Font titleFont, Plot plot, boolean createLegend)
          Constructs a chart.
JFreeChart(java.lang.String title, Plot plot)
          Creates a new chart.
 
Method Summary
 void addChangeListener(ChartChangeListener listener)
          Registers an object for notification of changes to the chart.
 void addProgressListener(ChartProgressListener listener)
          Registers an object for notification of progress events relating to the chart.
 void addSubtitle(AbstractTitle subtitle)
          Adds a chart subtitle, and notifies registered listeners that the chart has been modified.
 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.
 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 chartArea, ChartRenderingInfo info)
          Draws the chart on a Java 2D graphics device (such as the screen or a printer).
 void drawTitle(AbstractTitle title, java.awt.Graphics2D g2, java.awt.geom.Rectangle2D nonTitleArea)
          Draws a title.
 boolean equals(java.lang.Object obj)
          Tests this chart for equality with another object.
protected  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 chart's background image (possibly null).
 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 color/shade used to fill the chart background.
 CategoryPlot getCategoryPlot()
          Returns the plot cast as a CategoryPlot.
 Legend getLegend()
          Returns the chart legend.
 Plot getPlot()
          Returns the plot for the chart.
 AbstractTitle 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.
 boolean getSuppressChartChangeEvents()
          Deprecated. Use isNotify() instead.
 TextTitle getTitle()
          Returns the 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 isNotify()
          Returns a flag that controls whether or not change events are sent to registered listeners.
 void legendChanged(LegendChangeEvent event)
          Receives notification that the chart legend has changed, and passes this on 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 removeProgressListener(ChartProgressListener listener)
          Deregisters an object for notification of changes to the chart.
 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 chart's background image (null permitted).
 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 color/shade used to fill the chart background.
 void setLegend(Legend legend)
          Sets the chart legend.
 void setNotify(boolean notify)
           
 void setSubtitles(java.util.List subtitles)
          Sets the title list for the chart (completely replaces any existing titles).
 void setSuppressChartChangeEvents(boolean flag)
          Deprecated. Use setNotify(boolean) instead.
 void setTitle(java.lang.String title)
          Sets the chart title.
 void setTitle(TextTitle title)
          Sets the title for the chart.
 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
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INFO

public static final org.jfree.ui.about.ProjectInfo INFO
Information about the project.

Constructor Detail

JFreeChart

public JFreeChart(Plot plot)
Constructs a chart.

Note that the ChartFactory class contains static methods that will return a ready-made chart.

Parameters:
plot - controller of the visual representation of the data.

JFreeChart

public JFreeChart(java.lang.String title,
                  Plot plot)
Creates a new chart.

Parameters:
title - the chart title.
plot - the plot.

JFreeChart

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

Note that the ChartFactory class contains static methods that will return a ready-made chart.

Parameters:
title - the main chart title.
titleFont - the font for displaying the chart title.
plot - controller of the visual representation of the data.
createLegend - a flag indicating whether or not a legend should be created for the chart.
Method Detail

getTitle

public TextTitle getTitle()
Returns the chart title.

Returns:
the chart title.

setTitle

public void setTitle(TextTitle title)
Sets the title for the chart.

Parameters:
title - the new title.

setTitle

public void setTitle(java.lang.String title)
Sets the chart title.

Parameters:
title - the new title.

getSubtitles

public java.util.List getSubtitles()
Returns the list of subtitles.

Returns:
the subtitle list.

setSubtitles

public void setSubtitles(java.util.List subtitles)
Sets the title list for the chart (completely replaces any existing titles).

Parameters:
subtitles - the new list of subtitles.

getSubtitleCount

public int getSubtitleCount()
Returns the number of titles for the chart.

Returns:
the number of titles for the chart.

getSubtitle

public AbstractTitle getSubtitle(int index)
Returns a chart subtitle.

Parameters:
index - the index of the chart subtitle (zero based).
Returns:
a chart subtitle.

addSubtitle

public void addSubtitle(AbstractTitle subtitle)
Adds a chart subtitle, and notifies registered listeners that the chart has been modified.

Parameters:
subtitle - the subtitle.

getLegend

public Legend getLegend()
Returns the chart legend.

Returns:
the chart legend (possibly null).

setLegend

public void setLegend(Legend legend)
Sets the chart legend. Registered listeners are notified that the chart has been modified.

Parameters:
legend - the new chart legend (null permitted).

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.

getCategoryPlot

public CategoryPlot getCategoryPlot()
Returns the plot cast as a CategoryPlot. If the plot is not an instance of CategoryPlot, then a ClassCastException is thrown.

Returns:
the plot.

getXYPlot

public XYPlot getXYPlot()
Returns the plot cast as an XYPlot. If the plot is not an instance of XYPlot, then a ClassCastException is thrown.

Returns:
the plot.

getAntiAlias

public boolean getAntiAlias()
Returns a flag that indicates whether or not anti-aliasing is used when the chart is drawn.

Returns:
the flag.

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.

Parameters:
flag - the new value of the flag.

getBackgroundPaint

public java.awt.Paint getBackgroundPaint()
Returns the color/shade used to fill the chart background.

Returns:
the color/shade used to fill the chart background.

setBackgroundPaint

public void setBackgroundPaint(java.awt.Paint paint)
Sets the color/shade used to fill the chart background. All registered listeners are notified that the chart has been changed.

Parameters:
paint - the new background color/shade.

getBackgroundImage

public java.awt.Image getBackgroundImage()
Returns the chart's background image (possibly null).

Returns:
the image.

setBackgroundImage

public void setBackgroundImage(java.awt.Image image)
Sets the chart's background image (null permitted). Registered listeners are notified that the chart has been changed.

Parameters:
image - the image.

getBackgroundImageAlignment

public int getBackgroundImageAlignment()
Returns the background image alignment. Alignment constants are defined in the com.jrefinery.ui.Align class in the JCommon class library.

Returns:
The alignment.

setBackgroundImageAlignment

public void setBackgroundImageAlignment(int alignment)
Sets the background alignment.

Alignment options are defined by the Align class.

Parameters:
alignment - the alignment.

getBackgroundImageAlpha

public float getBackgroundImageAlpha()
Returns the alpha-transparency for the chart's background image.

Returns:
the alpha-transparency.

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.

isNotify

public boolean isNotify()
Returns a flag that controls whether or not change events are sent to registered listeners.

Returns:
true or false.

setNotify

public void setNotify(boolean notify)

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 org.jfree.ui.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 chartArea,
                 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.
info - records info about the drawing (null means collect no info).

drawTitle

public void drawTitle(AbstractTitle title,
                      java.awt.Graphics2D g2,
                      java.awt.geom.Rectangle2D nonTitleArea)
Draws a title.

The title should be drawn at the top, bottom, left or right of the nonTitleArea, and the area should be updated to reflect the amount of space used by the title.

Parameters:
title - the title.
g2 - the graphics device.
nonTitleArea - the area.

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 - 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 (e.g. 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 (and hopefully it doesn't get in the way).

Parameters:
x - x-coordinate of the click.
y - y-coordinate of the click.
info - optional object for collection chart dimension and entity information.

addChangeListener

public void addChangeListener(ChartChangeListener listener)
Registers an object for notification of changes to the chart.

Parameters:
listener - the object being registered.

removeChangeListener

public void removeChangeListener(ChartChangeListener listener)
Deregisters an object for notification of changes to the chart.

Parameters:
listener - the object being deregistered.

fireChartChanged

protected 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.

removeProgressListener

public void removeProgressListener(ChartProgressListener listener)
Deregisters an object for notification of changes to the chart.

Parameters:
listener - the object being deregistered.

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.

legendChanged

public void legendChanged(LegendChangeEvent event)
Receives notification that the chart legend has changed, and passes this on to registered listeners.

Specified by:
legendChanged in interface LegendChangeListener
Parameters:
event - information about the chart legend 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.
Returns:
true or false.

main

public static void main(java.lang.String[] args)
Prints information about JFreeChart to standard output.

Parameters:
args - no arguments are honored.

getSuppressChartChangeEvents

public boolean getSuppressChartChangeEvents()
Deprecated. Use isNotify() instead.

Returns the flag that controls whether notification of chart change events is suppressed.

Returns:
The flag.

setSuppressChartChangeEvents

public void setSuppressChartChangeEvents(boolean flag)
Deprecated. Use setNotify(boolean) instead.

Sets a flag that is used to suppress notification of chart change events.

Parameters:
flag - the flag.