Package org.jfree.chart.plot
Class ThermometerPlot
java.lang.Object
org.jfree.chart.plot.Plot
org.jfree.chart.plot.ThermometerPlot
- All Implemented Interfaces:
Serializable
,Cloneable
,EventListener
,AnnotationChangeListener
,AxisChangeListener
,MarkerChangeListener
,LegendItemSource
,ValueAxisPlot
,Zoomable
,PublicCloneable
,DatasetChangeListener
public class ThermometerPlot
extends Plot
implements ValueAxisPlot, Zoomable, Cloneable, Serializable
A plot that displays a single value (from a
ValueDataset
) in a
thermometer type display.
This plot supports a number of options:
- three sub-ranges which could be viewed as 'Normal', 'Warning' and 'Critical' ranges.
- the thermometer can be run in two modes:
- fixed range, or
- range adjusts to current sub-range.
- settable units to be displayed.
- settable display location for the value text.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final int
The axis gap.static final int
A constant for the value label position (in the thermometer bulb).static final int
A constant for the 'critical' range.protected static final int
The default bulb radius.protected static final int
The default column radius.protected static final int
The default gap between the outlines representing the thermometer.protected static final double
The default lower bound.protected static final double
The default upper bound.protected static final int
Index for display high value in subrangeInfo matrix.protected static final int
Index for display low value in subrangeInfo matrix.static final int
A constant for the value label position (left of the thermometer).protected static ResourceBundle
The resourceBundle for the localization.static final int
A constant for the value label position (no label).static final int
A constant for the 'normal' range.protected static final int
Index for high value in subrangeInfo matrix.protected static final int
Index for low value in subrangeInfo matrix.static final int
A constant for the value label position (right of the thermometer).protected static final String[]
The unit strings.static final int
A constant for unit type 'Celcius'.static final int
A constant for unit type 'Fahrenheit'.static final int
A constant for unit type 'Kelvin'.static final int
A constant for unit type 'None'.static final int
A constant for the 'warning' range.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
ConstructorDescriptionCreates a new thermometer plot.ThermometerPlot
(ValueDataset dataset) Creates a new thermometer plot, using default attributes where necessary. -
Method Summary
Modifier and TypeMethodDescriptionclone()
Returns a clone of the plot.void
datasetChanged
(DatasetChangeEvent event) Checks to see if a new value means the axis range needs adjusting.void
draw
(Graphics2D g2, Rectangle2D area, Point2D anchor, PlotState parentState, PlotRenderingInfo info) Draws the plot on a Java 2D graphics device (such as the screen or a printer).boolean
Tests this plot for equality with another object.int
Returns the axis location.int
Returns the bulb diameter, which is always twice the value returned bygetBulbRadius()
.int
Returns the bulb radius, in Java2D units.int
Returns the column diameter, which is always twice the value returned bygetColumnRadius()
.int
Returns the column radius, in Java2D units.getDataRange
(ValueAxis axis) Returns the data range.Returns the dataset for the plot.boolean
Returns a flag that controls whether or not the thermometer axis zooms to display the subrange within which the data value falls.int
getGap()
Returns the gap, in Java2D units, between the two outlines that represent the thermometer.Returns the legend items for the plot.double
Returns the lower bound for the thermometer.Returns the default mercury paint.Returns the orientation of the plot.Returns the padding for the thermometer.Returns a short string describing the type of plot.Returns the range axis.getSubrangePaint
(int range) Gets the paint used for a particular subrange.Returns the paint used to draw the thermometer outline.Returns the stroke used to draw the thermometer outline.int
getUnits()
Returns a code indicating the unit display type.double
Returns the upper bound for the thermometer.boolean
Returns a flag that controls whether or not the mercury color changes for each subrange.Gets the font used to display the current value.int
Returns a code indicating the location at which the value label is displayed.Gets the paint used to display the current value.boolean
Returnsfalse
.boolean
Returnstrue
.protected static boolean
isValidNumber
(double d) Determine whether a number is valid and finite.void
setAxisLocation
(int location) Sets the location at which the axis is displayed relative to the thermometer, and sends aPlotChangeEvent
to all registered listeners.protected void
Sets the axis range to the current values in the rangeInfo array.void
setBulbRadius
(int r) Sets the bulb radius (in Java2D units) and sends aPlotChangeEvent
to all registered listeners.void
setColumnRadius
(int r) Sets the column radius (in Java2D units) and sends aPlotChangeEvent
to all registered listeners.void
setDataset
(ValueDataset dataset) Sets the dataset for the plot, replacing the existing dataset if there is one, and sends aPlotChangeEvent
to all registered listeners.void
setDisplayRange
(int range, double low, double high) Sets the displayed bounds for a sub range.void
setFollowDataInSubranges
(boolean flag) Sets the flag that controls whether or not the thermometer axis zooms to display the subrange within which the data value falls.void
setGap
(int gap) Sets the gap (in Java2D units) between the two outlines that represent the thermometer, and sends aPlotChangeEvent
to all registered listeners.void
setLowerBound
(double lower) Sets the lower bound for the thermometer.void
setMercuryPaint
(Paint paint) Sets the default mercury paint and sends aPlotChangeEvent
to all registered listeners.void
setPadding
(RectangleInsets padding) Sets the padding for the thermometer and sends aPlotChangeEvent
to all registered listeners.void
setRange
(double lower, double upper) Sets the lower and upper bounds for the thermometer.void
setRangeAxis
(ValueAxis axis) Sets the range axis for the plot and sends aPlotChangeEvent
to all registered listeners.void
setSubrange
(int range, double low, double high) Sets the bounds for a subrange.void
setSubrangeInfo
(int range, double low, double hi) Sets information for a particular range.void
setSubrangeInfo
(int range, double rangeLow, double rangeHigh, double displayLow, double displayHigh) Sets the subrangeInfo attribute of the ThermometerPlot objectvoid
setSubrangePaint
(int range, Paint paint) Sets the paint to be used for a subrange and sends aPlotChangeEvent
to all registered listeners.void
setThermometerPaint
(Paint paint) Sets the paint used to draw the thermometer outline and sends aPlotChangeEvent
to all registered listeners.void
Sets the stroke used to draw the thermometer outline and sends aPlotChangeEvent
to all registered listeners.void
setUnits
(int u) Sets the units to be displayed in the thermometer.void
setUpperBound
(double upper) Sets the upper bound for the thermometer.void
setUseSubrangePaint
(boolean flag) Sets the range colour change option.void
setValueFont
(Font f) Sets the font used to display the current value.void
setValueFormat
(NumberFormat formatter) Sets the formatter for the value label and sends aPlotChangeEvent
to all registered listeners.void
setValueLocation
(int location) Sets the location at which the current value is displayed and sends aPlotChangeEvent
to all registered listeners.void
setValuePaint
(Paint paint) Sets the paint used to display the current value and sends aPlotChangeEvent
to all registered listeners.void
zoom
(double percent) A zoom method that does nothing.void
zoomDomainAxes
(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source) This method does nothing.void
zoomDomainAxes
(double factor, PlotRenderingInfo state, Point2D source) Multiplies the range on the domain axis/axes by the specified factor.void
zoomDomainAxes
(double factor, PlotRenderingInfo state, Point2D source, boolean useAnchor) Multiplies the range on the domain axis/axes by the specified factor.void
zoomRangeAxes
(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source) Zooms the range axes.void
zoomRangeAxes
(double factor, PlotRenderingInfo state, Point2D source) Multiplies the range on the range axis/axes by the specified factor.void
zoomRangeAxes
(double factor, PlotRenderingInfo state, Point2D source, boolean useAnchor) Multiplies the range on the range axis/axes by the specified factor.Methods inherited from class org.jfree.chart.plot.Plot
addChangeListener, annotationChanged, axisChanged, canEqual, createAndAddEntity, drawBackground, drawBackgroundImage, drawNoDataMessage, drawOutline, fetchElementHintingFlag, fillBackground, fillBackground, fireChangeEvent, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundImageAlpha, getBackgroundPaint, getChart, getDatasetGroup, getDrawingSupplier, getForegroundAlpha, getInsets, getNoDataMessage, getNoDataMessageFont, getNoDataMessagePaint, getOutlinePaint, getOutlineStroke, getParent, getRectX, getRectY, getRootPlot, handleClick, hashCode, isNotify, isOutlineVisible, isSubplot, markerChanged, notifyListeners, removeChangeListener, resolveDomainAxisLocation, resolveRangeAxisLocation, setBackgroundAlpha, setBackgroundImage, setBackgroundImageAlignment, setBackgroundImageAlpha, setBackgroundPaint, setChart, setDatasetGroup, setDrawingSupplier, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setNotify, setOutlinePaint, setOutlineStroke, setOutlineVisible, setParent
-
Field Details
-
UNITS_NONE
A constant for unit type 'None'.- See Also:
-
UNITS_FAHRENHEIT
A constant for unit type 'Fahrenheit'.- See Also:
-
UNITS_CELCIUS
A constant for unit type 'Celcius'.- See Also:
-
UNITS_KELVIN
A constant for unit type 'Kelvin'.- See Also:
-
NONE
A constant for the value label position (no label).- See Also:
-
RIGHT
A constant for the value label position (right of the thermometer).- See Also:
-
LEFT
A constant for the value label position (left of the thermometer).- See Also:
-
BULB
A constant for the value label position (in the thermometer bulb).- See Also:
-
NORMAL
A constant for the 'normal' range.- See Also:
-
WARNING
A constant for the 'warning' range.- See Also:
-
CRITICAL
A constant for the 'critical' range.- See Also:
-
AXIS_GAP
The axis gap.- See Also:
-
UNITS
The unit strings. -
RANGE_LOW
Index for low value in subrangeInfo matrix.- See Also:
-
RANGE_HIGH
Index for high value in subrangeInfo matrix.- See Also:
-
DISPLAY_LOW
Index for display low value in subrangeInfo matrix.- See Also:
-
DISPLAY_HIGH
Index for display high value in subrangeInfo matrix.- See Also:
-
DEFAULT_LOWER_BOUND
The default lower bound.- See Also:
-
DEFAULT_UPPER_BOUND
The default upper bound.- See Also:
-
DEFAULT_BULB_RADIUS
The default bulb radius.- See Also:
-
DEFAULT_COLUMN_RADIUS
The default column radius.- See Also:
-
DEFAULT_GAP
The default gap between the outlines representing the thermometer.- See Also:
-
localizationResources
The resourceBundle for the localization.
-
-
Constructor Details
-
ThermometerPlot
public ThermometerPlot()Creates a new thermometer plot. -
ThermometerPlot
Creates a new thermometer plot, using default attributes where necessary.- Parameters:
dataset
- the data set.
-
-
Method Details
-
getDataset
Returns the dataset for the plot.- Returns:
- The dataset (possibly
null
). - See Also:
-
setDataset
Sets the dataset for the plot, replacing the existing dataset if there is one, and sends aPlotChangeEvent
to all registered listeners.- Parameters:
dataset
- the dataset (null
permitted).- See Also:
-
getRangeAxis
Returns the range axis.- Returns:
- The range axis (never
null
). - See Also:
-
setRangeAxis
Sets the range axis for the plot and sends aPlotChangeEvent
to all registered listeners.- Parameters:
axis
- the new axis (null
not permitted).- See Also:
-
getLowerBound
Returns the lower bound for the thermometer. The data value can be set lower than this, but it will not be shown in the thermometer.- Returns:
- The lower bound.
- See Also:
-
setLowerBound
Sets the lower bound for the thermometer.- Parameters:
lower
- the lower bound.- See Also:
-
getUpperBound
Returns the upper bound for the thermometer. The data value can be set higher than this, but it will not be shown in the thermometer.- Returns:
- The upper bound.
- See Also:
-
setUpperBound
Sets the upper bound for the thermometer.- Parameters:
upper
- the upper bound.- See Also:
-
setRange
Sets the lower and upper bounds for the thermometer.- Parameters:
lower
- the lower bound.upper
- the upper bound.
-
getPadding
Returns the padding for the thermometer. This is the space inside the plot area.- Returns:
- The padding (never
null
). - See Also:
-
setPadding
Sets the padding for the thermometer and sends aPlotChangeEvent
to all registered listeners.- Parameters:
padding
- the padding (null
not permitted).- See Also:
-
getThermometerStroke
Returns the stroke used to draw the thermometer outline.- Returns:
- The stroke (never
null
). - See Also:
-
setThermometerStroke
Sets the stroke used to draw the thermometer outline and sends aPlotChangeEvent
to all registered listeners.- Parameters:
s
- the new stroke (null
ignored).- See Also:
-
getThermometerPaint
Returns the paint used to draw the thermometer outline.- Returns:
- The paint (never
null
). - See Also:
-
setThermometerPaint
Sets the paint used to draw the thermometer outline and sends aPlotChangeEvent
to all registered listeners.- Parameters:
paint
- the new paint (null
ignored).- See Also:
-
getUnits
Returns a code indicating the unit display type. This is one ofUNITS_NONE
,UNITS_FAHRENHEIT
,UNITS_CELCIUS
andUNITS_KELVIN
.- Returns:
- The units type.
- See Also:
-
setUnits
Sets the units to be displayed in the thermometer. Use one of the following constants:- UNITS_NONE : no units displayed.
- UNITS_FAHRENHEIT : units displayed in Fahrenheit.
- UNITS_CELCIUS : units displayed in Celcius.
- UNITS_KELVIN : units displayed in Kelvin.
- Parameters:
u
- the new unit type.- See Also:
-
getValueLocation
Returns a code indicating the location at which the value label is displayed. -
setValueLocation
Sets the location at which the current value is displayed and sends aPlotChangeEvent
to all registered listeners.The location can be one of the constants:
NONE
,RIGHT
,LEFT
andBULB
.- Parameters:
location
- the location.
-
getAxisLocation
Returns the axis location. -
setAxisLocation
Sets the location at which the axis is displayed relative to the thermometer, and sends aPlotChangeEvent
to all registered listeners. -
getValueFont
Gets the font used to display the current value.- Returns:
- The font.
- See Also:
-
setValueFont
Sets the font used to display the current value.- Parameters:
f
- the new font (null
not permitted).- See Also:
-
getValuePaint
Gets the paint used to display the current value.- Returns:
- The paint.
- See Also:
-
setValuePaint
Sets the paint used to display the current value and sends aPlotChangeEvent
to all registered listeners.- Parameters:
paint
- the new paint (null
not permitted).- See Also:
-
setValueFormat
Sets the formatter for the value label and sends aPlotChangeEvent
to all registered listeners.- Parameters:
formatter
- the new formatter (null
not permitted).
-
getMercuryPaint
Returns the default mercury paint.- Returns:
- The paint (never
null
). - See Also:
-
setMercuryPaint
Sets the default mercury paint and sends aPlotChangeEvent
to all registered listeners.- Parameters:
paint
- the new paint (null
not permitted).- See Also:
-
setSubrangeInfo
Sets information for a particular range.- Parameters:
range
- the range to specify information about.low
- the low value for the rangehi
- the high value for the range
-
setSubrangeInfo
public void setSubrangeInfo(int range, double rangeLow, double rangeHigh, double displayLow, double displayHigh) Sets the subrangeInfo attribute of the ThermometerPlot object- Parameters:
range
- the new rangeInfo value.rangeLow
- the new rangeInfo valuerangeHigh
- the new rangeInfo valuedisplayLow
- the new rangeInfo valuedisplayHigh
- the new rangeInfo value
-
setSubrange
Sets the bounds for a subrange.- Parameters:
range
- the range type.low
- the low value.high
- the high value.
-
setDisplayRange
Sets the displayed bounds for a sub range.- Parameters:
range
- the range type.low
- the low value.high
- the high value.
-
getSubrangePaint
Gets the paint used for a particular subrange.- Parameters:
range
- the range (.- Returns:
- The paint.
- See Also:
-
setSubrangePaint
Sets the paint to be used for a subrange and sends aPlotChangeEvent
to all registered listeners.- Parameters:
range
- the range (0, 1 or 2).paint
- the paint to be applied (null
not permitted).- See Also:
-
getFollowDataInSubranges
Returns a flag that controls whether or not the thermometer axis zooms to display the subrange within which the data value falls.- Returns:
- The flag.
-
setFollowDataInSubranges
Sets the flag that controls whether or not the thermometer axis zooms to display the subrange within which the data value falls.- Parameters:
flag
- the flag.
-
getUseSubrangePaint
Returns a flag that controls whether or not the mercury color changes for each subrange.- Returns:
- The flag.
- See Also:
-
setUseSubrangePaint
Sets the range colour change option.- Parameters:
flag
- the new range colour change option- See Also:
-
getBulbRadius
Returns the bulb radius, in Java2D units.- Returns:
- The bulb radius.
-
setBulbRadius
Sets the bulb radius (in Java2D units) and sends aPlotChangeEvent
to all registered listeners.- Parameters:
r
- the new radius (in Java2D units).- See Also:
-
getBulbDiameter
Returns the bulb diameter, which is always twice the value returned bygetBulbRadius()
.- Returns:
- The bulb diameter.
-
getColumnRadius
Returns the column radius, in Java2D units.- Returns:
- The column radius.
- See Also:
-
setColumnRadius
Sets the column radius (in Java2D units) and sends aPlotChangeEvent
to all registered listeners.- Parameters:
r
- the new radius.- See Also:
-
getColumnDiameter
Returns the column diameter, which is always twice the value returned bygetColumnRadius()
.- Returns:
- The column diameter.
-
getGap
Returns the gap, in Java2D units, between the two outlines that represent the thermometer.- Returns:
- The gap.
- See Also:
-
setGap
Sets the gap (in Java2D units) between the two outlines that represent the thermometer, and sends aPlotChangeEvent
to all registered listeners.- Parameters:
gap
- the new gap.- See Also:
-
draw
public void draw(Graphics2D g2, Rectangle2D area, Point2D anchor, PlotState parentState, PlotRenderingInfo info) Draws the plot on a Java 2D graphics device (such as the screen or a printer). -
zoom
A zoom method that does nothing. Plots are required to support the zoom operation. In the case of a thermometer chart, it doesn't make sense to zoom in or out, so the method is empty. -
getPlotType
Returns a short string describing the type of plot.- Specified by:
getPlotType
in classPlot
- Returns:
- A short string describing the type of plot.
-
datasetChanged
Checks to see if a new value means the axis range needs adjusting.- Specified by:
datasetChanged
in interfaceDatasetChangeListener
- Overrides:
datasetChanged
in classPlot
- Parameters:
event
- the dataset change event.
-
getDataRange
Returns the data range.- Specified by:
getDataRange
in interfaceValueAxisPlot
- Parameters:
axis
- the axis.- Returns:
- The range of data displayed.
-
setAxisRange
Sets the axis range to the current values in the rangeInfo array. -
getLegendItems
Returns the legend items for the plot.- Specified by:
getLegendItems
in interfaceLegendItemSource
- Overrides:
getLegendItems
in classPlot
- Returns:
null
.
-
getOrientation
Returns the orientation of the plot.- Specified by:
getOrientation
in interfaceZoomable
- Returns:
- The orientation (always
PlotOrientation.VERTICAL
).
-
isValidNumber
Determine whether a number is valid and finite.- Parameters:
d
- the number to be tested.- Returns:
true
if the number is valid and finite, andfalse
otherwise.
-
equals
Tests this plot for equality with another object. The plot's dataset is not considered in the test. -
clone
Returns a clone of the plot.- Specified by:
clone
in interfacePublicCloneable
- Overrides:
clone
in classPlot
- Returns:
- A clone.
- Throws:
CloneNotSupportedException
- if the plot cannot be cloned.
-
zoomDomainAxes
Multiplies the range on the domain axis/axes by the specified factor.- Specified by:
zoomDomainAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point.- See Also:
-
zoomDomainAxes
public void zoomDomainAxes(double factor, PlotRenderingInfo state, Point2D source, boolean useAnchor) Multiplies the range on the domain axis/axes by the specified factor.- Specified by:
zoomDomainAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point.useAnchor
- a flag that controls whether or not the source point is used for the zoom anchor.- See Also:
-
zoomRangeAxes
Multiplies the range on the range axis/axes by the specified factor.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point.- See Also:
-
zoomRangeAxes
public void zoomRangeAxes(double factor, PlotRenderingInfo state, Point2D source, boolean useAnchor) Multiplies the range on the range axis/axes by the specified factor.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point.useAnchor
- a flag that controls whether or not the source point is used for the zoom anchor.- See Also:
-
zoomDomainAxes
public void zoomDomainAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source) This method does nothing.- Specified by:
zoomDomainAxes
in interfaceZoomable
- Parameters:
lowerPercent
- the lower percent.upperPercent
- the upper percent.state
- the plot state.source
- the source point.- See Also:
-
zoomRangeAxes
public void zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo state, Point2D source) Zooms the range axes.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Parameters:
lowerPercent
- the lower percent.upperPercent
- the upper percent.state
- the plot state.source
- the source point.- See Also:
-
isDomainZoomable
Returnsfalse
.- Specified by:
isDomainZoomable
in interfaceZoomable
- Returns:
- A boolean.
- See Also:
-
isRangeZoomable
Returnstrue
.- Specified by:
isRangeZoomable
in interfaceZoomable
- Returns:
- A boolean.
- See Also:
-