org.jfree.chart.plot

## Class MeterPlot

- java.lang.Object
- - org.jfree.chart.plot.Plot
  - - org.jfree.chart.plot.MeterPlot

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, java.util.EventListener, AnnotationChangeListener, AxisChangeListener, MarkerChangeListener, LegendItemSource, DatasetChangeListener, org.jfree.util.PublicCloneable

    public class MeterPlot
    extends Plot
    implements java.io.Serializable, java.lang.Cloneable

A plot that displays a single value in the form of a needle on a dial. Defined ranges (for example, 'normal', 'warning' and 'critical') can be highlighted on the dial.

See Also:
  Serialized Form

### Field Summary

Fields
`static float` `DEFAULT_BORDER_SIZE` The default border size.
`static float` `DEFAULT_CIRCLE_SIZE` The default circle size.
`static java.awt.Font` `DEFAULT_LABEL_FONT` The default label font.
`static int` `DEFAULT_METER_ANGLE` The default meter angle.
`protected static java.util.ResourceBundle` `localizationResources` The resourceBundle for the localization.

### Fields inherited from class org.jfree.chart.plot.Plot

`DEFAULT_BACKGROUND_ALPHA, DEFAULT_BACKGROUND_PAINT, DEFAULT_FOREGROUND_ALPHA, DEFAULT_INSETS, DEFAULT_LEGEND_ITEM_BOX, DEFAULT_LEGEND_ITEM_CIRCLE, DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, MINIMUM_HEIGHT_TO_DRAW, MINIMUM_WIDTH_TO_DRAW, ZERO`

### Constructor Summary

Constructors
Constructor and Description
`MeterPlot()` Creates a new plot with a default range of `0` to `100` and no value to display.
`MeterPlot(ValueDataset dataset)` Creates a new plot that displays the value from the supplied dataset.

### Method Summary

Methods
`void` `addInterval(MeterInterval interval)` Adds an interval and sends a `PlotChangeEvent` to all registered listeners.
`void` `clearIntervals()` Clears the intervals for the plot and sends a `PlotChangeEvent` to all registered listeners.
`java.lang.Object` `clone()` Returns an independent copy (clone) of the plot.
`void` `draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, java.awt.geom.Point2D anchor, PlotState parentState, PlotRenderingInfo info)` Draws the plot on a Java 2D graphics device (such as the screen or a printer).
`protected void` `drawArc(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, double minValue, double maxValue, java.awt.Paint paint, java.awt.Stroke stroke)` Draws an arc.
`protected void` `drawArcForInterval(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D meterArea, MeterInterval interval)` Draws the arc to represent an interval.
`protected void` `drawTick(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D meterArea, double value)` Draws a tick.
`protected void` `drawTick(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D meterArea, double value, boolean label)` Draws a tick on the dial.
`protected void` `drawTicks(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D meterArea, double minValue, double maxValue)` Draws the ticks that subdivide the overall range.
`protected void` `drawValueLabel(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area)` Draws the value label just below the center of the dial.
`boolean` `equals(java.lang.Object obj)` Tests the plot for equality with an arbitrary object.
`protected void` `fillArc(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, double minValue, double maxValue, java.awt.Paint paint, boolean dial)` Fills an arc on the dial between the given values.
`ValueDataset` `getDataset()` Returns the dataset for the plot.
`java.awt.Paint` `getDialBackgroundPaint()` Returns the paint for the dial background.
`java.awt.Paint` `getDialOutlinePaint()` Returns the dial outline paint.
`DialShape` `getDialShape()` Returns the dial shape.
`boolean` `getDrawBorder()` Returns a flag that controls whether or not a rectangular border is drawn around the plot area.
`java.util.List` `getIntervals()` Returns an unmodifiable list of the intervals for the plot.
`LegendItemCollection` `getLegendItems()` Returns an item for each interval.
`int` `getMeterAngle()` Returns the meter angle in degrees.
`java.awt.Paint` `getNeedlePaint()` Returns the paint for the needle.
`java.lang.String` `getPlotType()` Returns a short string describing the type of plot.
`Range` `getRange()` Returns the overall range for the dial.
`java.awt.Font` `getTickLabelFont()` Returns the tick label font.
`java.text.NumberFormat` `getTickLabelFormat()` Returns the tick label format.
`java.awt.Paint` `getTickLabelPaint()` Returns the tick label paint.
`boolean` `getTickLabelsVisible()` Returns the flag that determines whether or not tick labels are visible.
`java.awt.Paint` `getTickPaint()` Returns the paint used to draw the ticks around the dial.
`double` `getTickSize()` Returns the tick size (the interval between ticks on the dial).
`java.lang.String` `getUnits()` Returns a string describing the units for the dial.
`java.awt.Font` `getValueFont()` Returns the font for the value label.
`java.awt.Paint` `getValuePaint()` Returns the paint for the value label.
`void` `setDataset(ValueDataset dataset)` Sets the dataset for the plot, replacing the existing dataset if there is one, and triggers a `PlotChangeEvent`.
`void` `setDialBackgroundPaint(java.awt.Paint paint)` Sets the paint used to fill the dial background.
`void` `setDialOutlinePaint(java.awt.Paint paint)` Sets the dial outline paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setDialShape(DialShape shape)` Sets the dial shape and sends a `PlotChangeEvent` to all registered listeners.
`void` `setDrawBorder(boolean draw)` Sets the flag that controls whether or not a rectangular border is drawn around the plot area and sends a `PlotChangeEvent` to all registered listeners.
`void` `setMeterAngle(int angle)` Sets the angle (in degrees) for the whole range of the dial and sends a `PlotChangeEvent` to all registered listeners.
`void` `setNeedlePaint(java.awt.Paint paint)` Sets the paint used to display the needle and sends a `PlotChangeEvent` to all registered listeners.
`void` `setRange(Range range)` Sets the range for the dial and sends a `PlotChangeEvent` to all registered listeners.
`void` `setTickLabelFont(java.awt.Font font)` Sets the tick label font and sends a `PlotChangeEvent` to all registered listeners.
`void` `setTickLabelFormat(java.text.NumberFormat format)` Sets the format for the tick labels and sends a `PlotChangeEvent` to all registered listeners.
`void` `setTickLabelPaint(java.awt.Paint paint)` Sets the tick label paint and sends a `PlotChangeEvent` to all registered listeners.
`void` `setTickLabelsVisible(boolean visible)` Sets the flag that controls whether or not the tick labels are visible and sends a `PlotChangeEvent` to all registered listeners.
`void` `setTickPaint(java.awt.Paint paint)` Sets the paint used to draw the tick labels around the dial and sends a `PlotChangeEvent` to all registered listeners.
`void` `setTickSize(double size)` Sets the tick size and sends a `PlotChangeEvent` to all registered listeners.
`void` `setUnits(java.lang.String units)` Sets the units for the dial and sends a `PlotChangeEvent` to all registered listeners.
`void` `setValueFont(java.awt.Font font)` Sets the font used to display the value label and sends a `PlotChangeEvent` to all registered listeners.
`void` `setValuePaint(java.awt.Paint paint)` Sets the paint used to display the value label and sends a `PlotChangeEvent` to all registered listeners.
`double` `valueToAngle(double value)` Translates a data value to an angle on the dial.
`void` `zoom(double percent)` A zoom method that does nothing.

### Methods inherited from class org.jfree.chart.plot.Plot

`addChangeListener, annotationChanged, axisChanged, createAndAddEntity, datasetChanged, drawBackground, drawBackgroundImage, drawNoDataMessage, drawOutline, fillBackground, fillBackground, fireChangeEvent, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundImageAlpha, getBackgroundPaint, getDatasetGroup, getDrawingSupplier, getForegroundAlpha, getInsets, getNoDataMessage, getNoDataMessageFont, getNoDataMessagePaint, getOutlinePaint, getOutlineStroke, getParent, getRectX, getRectY, getRootPlot, handleClick, isNotify, isOutlineVisible, isSubplot, markerChanged, notifyListeners, removeChangeListener, resolveDomainAxisLocation, resolveRangeAxisLocation, setBackgroundAlpha, setBackgroundImage, setBackgroundImageAlignment, setBackgroundImageAlpha, setBackgroundPaint, setDatasetGroup, setDrawingSupplier, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setNotify, setOutlinePaint, setOutlineStroke, setOutlineVisible, setParent`

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

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

### Field Detail

#### DEFAULT_METER_ANGLE

    public static final int DEFAULT_METER_ANGLE

The default meter angle.

See Also:
  Constant Field Values

#### DEFAULT_BORDER_SIZE

    public static final float DEFAULT_BORDER_SIZE

The default border size.

See Also:
  Constant Field Values

#### DEFAULT_CIRCLE_SIZE

    public static final float DEFAULT_CIRCLE_SIZE

The default circle size.

See Also:
  Constant Field Values

#### DEFAULT_LABEL_FONT

    public static final java.awt.Font DEFAULT_LABEL_FONT

The default label font.

#### localizationResources

    protected static java.util.ResourceBundle localizationResources

The resourceBundle for the localization.

### Constructor Detail

#### MeterPlot

    public MeterPlot()

Creates a new plot with a default range of `0` to `100` and no value to display.

#### MeterPlot

    public MeterPlot(ValueDataset dataset)

Creates a new plot that displays the value from the supplied dataset.

Parameters:
  `dataset` - the dataset (`null` permitted).

### Method Detail

#### getDialShape

    public DialShape getDialShape()

Returns the dial shape. The default is `DialShape.CIRCLE`).

Returns:
  The dial shape (never `null`).
See Also:
  `setDialShape(DialShape)`

#### setDialShape

    public void setDialShape(DialShape shape)

Sets the dial shape and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `shape` - the shape (`null` not permitted).
See Also:
  `getDialShape()`

#### getMeterAngle

    public int getMeterAngle()

Returns the meter angle in degrees. This defines, in part, the shape of the dial. The default is 270 degrees.

Returns:
  The meter angle (in degrees).
See Also:
  `setMeterAngle(int)`

#### setMeterAngle

    public void setMeterAngle(int angle)

Sets the angle (in degrees) for the whole range of the dial and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `angle` - the angle (in degrees, in the range 1-360).
See Also:
  `getMeterAngle()`

#### getRange

    public Range getRange()

Returns the overall range for the dial.

Returns:
  The overall range (never `null`).
See Also:
  `setRange(Range)`

#### setRange

    public void setRange(Range range)

Sets the range for the dial and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `range` - the range (`null` not permitted and zero-length ranges not permitted).
See Also:
  `getRange()`

#### getTickSize

    public double getTickSize()

Returns the tick size (the interval between ticks on the dial).

Returns:
  The tick size.
See Also:
  `setTickSize(double)`

#### setTickSize

    public void setTickSize(double size)

Sets the tick size and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `size` - the tick size (must be > 0).
See Also:
  `getTickSize()`

#### getTickPaint

    public java.awt.Paint getTickPaint()

Returns the paint used to draw the ticks around the dial.

Returns:
  The paint used to draw the ticks around the dial (never `null`).
See Also:
  `setTickPaint(Paint)`

#### setTickPaint

    public void setTickPaint(java.awt.Paint paint)

Sets the paint used to draw the tick labels around the dial and sends a `PlotChangeEvent` to all registered listeners.

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

#### getUnits

    public java.lang.String getUnits()

Returns a string describing the units for the dial.

Returns:
  The units (possibly `null`).
See Also:
  `setUnits(String)`

#### setUnits

    public void setUnits(java.lang.String units)

Sets the units for the dial and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `units` - the units (`null` permitted).
See Also:
  `getUnits()`

#### getNeedlePaint

    public java.awt.Paint getNeedlePaint()

Returns the paint for the needle.

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

#### setNeedlePaint

    public void setNeedlePaint(java.awt.Paint paint)

Sets the paint used to display the needle and sends a `PlotChangeEvent` to all registered listeners.

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

#### getTickLabelsVisible

    public boolean getTickLabelsVisible()

Returns the flag that determines whether or not tick labels are visible.

Returns:
  The flag.
See Also:
  `setTickLabelsVisible(boolean)`

#### setTickLabelsVisible

    public void setTickLabelsVisible(boolean visible)

Sets the flag that controls whether or not the tick labels are visible and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `visible` - the flag.
See Also:
  `getTickLabelsVisible()`

#### getTickLabelFont

    public java.awt.Font getTickLabelFont()

Returns the tick label font.

Returns:
  The font (never `null`).
See Also:
  `setTickLabelFont(Font)`

#### setTickLabelFont

    public void setTickLabelFont(java.awt.Font font)

Sets the tick label font and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `font` - the font (`null` not permitted).
See Also:
  `getTickLabelFont()`

#### getTickLabelPaint

    public java.awt.Paint getTickLabelPaint()

Returns the tick label paint.

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

#### setTickLabelPaint

    public void setTickLabelPaint(java.awt.Paint paint)

Sets the tick label paint and sends a `PlotChangeEvent` to all registered listeners.

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

#### getTickLabelFormat

    public java.text.NumberFormat getTickLabelFormat()

Returns the tick label format.

Returns:
  The tick label format (never `null`).
See Also:
  `setTickLabelFormat(NumberFormat)`

#### setTickLabelFormat

    public void setTickLabelFormat(java.text.NumberFormat format)

Sets the format for the tick labels and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `format` - the format (`null` not permitted).
See Also:
  `getTickLabelFormat()`

#### getValueFont

    public java.awt.Font getValueFont()

Returns the font for the value label.

Returns:
  The font (never `null`).
See Also:
  `setValueFont(Font)`

#### setValueFont

    public void setValueFont(java.awt.Font font)

Sets the font used to display the value label and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `font` - the font (`null` not permitted).
See Also:
  `getValueFont()`

#### getValuePaint

    public java.awt.Paint getValuePaint()

Returns the paint for the value label.

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

#### setValuePaint

    public void setValuePaint(java.awt.Paint paint)

Sets the paint used to display the value label and sends a `PlotChangeEvent` to all registered listeners.

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

#### getDialBackgroundPaint

    public java.awt.Paint getDialBackgroundPaint()

Returns the paint for the dial background.

Returns:
  The paint (possibly `null`).
See Also:
  `setDialBackgroundPaint(Paint)`

#### setDialBackgroundPaint

    public void setDialBackgroundPaint(java.awt.Paint paint)

Sets the paint used to fill the dial background. Set this to `null` for no background.

Parameters:
  `paint` - the paint (`null` permitted).
See Also:
  `getDialBackgroundPaint()`

#### getDrawBorder

    public boolean getDrawBorder()

Returns a flag that controls whether or not a rectangular border is drawn around the plot area.

Returns:
  A flag.
See Also:
  `setDrawBorder(boolean)`

#### setDrawBorder

    public void setDrawBorder(boolean draw)

Sets the flag that controls whether or not a rectangular border is drawn around the plot area and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `draw` - the flag.
See Also:
  `getDrawBorder()`

#### getDialOutlinePaint

    public java.awt.Paint getDialOutlinePaint()

Returns the dial outline paint.

Returns:
  The paint.
See Also:
  `setDialOutlinePaint(Paint)`

#### setDialOutlinePaint

    public void setDialOutlinePaint(java.awt.Paint paint)

Sets the dial outline paint and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `paint` - the paint.
See Also:
  `getDialOutlinePaint()`

#### getDataset

    public ValueDataset getDataset()

Returns the dataset for the plot.

Returns:
  The dataset (possibly `null`).
See Also:
  `setDataset(ValueDataset)`

#### setDataset

    public void setDataset(ValueDataset dataset)

Sets the dataset for the plot, replacing the existing dataset if there is one, and triggers a `PlotChangeEvent`.

Parameters:
  `dataset` - the dataset (`null` permitted).
See Also:
  `getDataset()`

#### getIntervals

    public java.util.List getIntervals()

Returns an unmodifiable list of the intervals for the plot.

Returns:
  A list.
See Also:
  `addInterval(MeterInterval)`

#### addInterval

    public void addInterval(MeterInterval interval)

Adds an interval and sends a `PlotChangeEvent` to all registered listeners.

Parameters:
  `interval` - the interval (`null` not permitted).
See Also:
  `getIntervals()`, `clearIntervals()`

#### clearIntervals

    public void clearIntervals()

Clears the intervals for the plot and sends a `PlotChangeEvent` to all registered listeners.

See Also:
  `addInterval(MeterInterval)`

#### getLegendItems

    public LegendItemCollection getLegendItems()

Returns an item for each interval.

Specified by:
  `getLegendItems` in interface `LegendItemSource`
Overrides:
  `getLegendItems` in class `Plot`
Returns:
  A collection of legend items.

#### draw

    public void draw(java.awt.Graphics2D g2,
            java.awt.geom.Rectangle2D area,
            java.awt.geom.Point2D anchor,
            PlotState parentState,
            PlotRenderingInfo info)

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

Specified by:
  `draw` in class `Plot`
Parameters:
  `g2` - the graphics device.
  `area` - the area within which the plot should be drawn.
  `anchor` - the anchor point (`null` permitted).
  `parentState` - the state from the parent plot, if there is one.
  `info` - collects info about the drawing.

#### drawArcForInterval

    protected void drawArcForInterval(java.awt.Graphics2D g2,
                          java.awt.geom.Rectangle2D meterArea,
                          MeterInterval interval)

Draws the arc to represent an interval.

Parameters:
  `g2` - the graphics device.
  `meterArea` - the drawing area.
  `interval` - the interval.

#### drawArc

    protected void drawArc(java.awt.Graphics2D g2,
               java.awt.geom.Rectangle2D area,
               double minValue,
               double maxValue,
               java.awt.Paint paint,
               java.awt.Stroke stroke)

Draws an arc.

Parameters:
  `g2` - the graphics device.
  `area` - the plot area.
  `minValue` - the minimum value.
  `maxValue` - the maximum value.
  `paint` - the paint.
  `stroke` - the stroke.

#### fillArc

    protected void fillArc(java.awt.Graphics2D g2,
               java.awt.geom.Rectangle2D area,
               double minValue,
               double maxValue,
               java.awt.Paint paint,
               boolean dial)

Fills an arc on the dial between the given values.

Parameters:
  `g2` - the graphics device.
  `area` - the plot area.
  `minValue` - the minimum data value.
  `maxValue` - the maximum data value.
  `paint` - the background paint (`null` not permitted).
  `dial` - a flag that indicates whether the arc represents the whole dial.

#### valueToAngle

    public double valueToAngle(double value)

Translates a data value to an angle on the dial.

Parameters:
  `value` - the value.
Returns:
  The angle on the dial.

#### drawTicks

    protected void drawTicks(java.awt.Graphics2D g2,
                 java.awt.geom.Rectangle2D meterArea,
                 double minValue,
                 double maxValue)

Draws the ticks that subdivide the overall range.

Parameters:
  `g2` - the graphics device.
  `meterArea` - the meter area.
  `minValue` - the minimum value.
  `maxValue` - the maximum value.

#### drawTick

    protected void drawTick(java.awt.Graphics2D g2,
                java.awt.geom.Rectangle2D meterArea,
                double value)

Draws a tick.

Parameters:
  `g2` - the graphics device.
  `meterArea` - the meter area.
  `value` - the value.

#### drawTick

    protected void drawTick(java.awt.Graphics2D g2,
                java.awt.geom.Rectangle2D meterArea,
                double value,
                boolean label)

Draws a tick on the dial.

Parameters:
  `g2` - the graphics device.
  `meterArea` - the meter area.
  `value` - the tick value.
  `label` - a flag that controls whether or not a value label is drawn.

#### drawValueLabel

    protected void drawValueLabel(java.awt.Graphics2D g2,
                      java.awt.geom.Rectangle2D area)

Draws the value label just below the center of the dial.

Parameters:
  `g2` - the graphics device.
  `area` - the plot area.

#### getPlotType

    public java.lang.String getPlotType()

Returns a short string describing the type of plot.

Specified by:
  `getPlotType` in class `Plot`
Returns:
  A string describing the type of plot.

#### zoom

    public void zoom(double percent)

A zoom method that does nothing. Plots are required to support the zoom operation. In the case of a meter plot, it doesn't make sense to zoom in or out, so the method is empty.

Overrides:
  `zoom` in class `Plot`
Parameters:
  `percent` - The zoom percentage.

#### equals

    public boolean equals(java.lang.Object obj)

Tests the plot for equality with an arbitrary object. Note that the dataset is ignored for the purposes of testing equality.

Overrides:
  `equals` in class `Plot`
Parameters:
  `obj` - the object (`null` permitted).
Returns:
  A boolean.

#### clone

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

Returns an independent copy (clone) of the plot. The dataset is NOT cloned - both the original and the clone will have a reference to the same dataset.

Specified by:
  `clone` in interface `org.jfree.util.PublicCloneable`
Overrides:
  `clone` in class `Plot`
Returns:
  A clone.
Throws:
  `java.lang.CloneNotSupportedException` - if some component of the plot cannot be cloned.