java.lang.Object
org.jfree.chart.plot.Plot
org.jfree.chart.plot.ThermometerPlot
- All Implemented Interfaces:
Disposable
,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
dispose()
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, 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, 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
public static final int UNITS_NONEA constant for unit type 'None'.- See Also:
-
UNITS_FAHRENHEIT
public static final int UNITS_FAHRENHEITA constant for unit type 'Fahrenheit'.- See Also:
-
UNITS_CELCIUS
public static final int UNITS_CELCIUSA constant for unit type 'Celcius'.- See Also:
-
UNITS_KELVIN
public static final int UNITS_KELVINA constant for unit type 'Kelvin'.- See Also:
-
NONE
public static final int NONEA constant for the value label position (no label).- See Also:
-
RIGHT
public static final int RIGHTA constant for the value label position (right of the thermometer).- See Also:
-
LEFT
public static final int LEFTA constant for the value label position (left of the thermometer).- See Also:
-
BULB
public static final int BULBA constant for the value label position (in the thermometer bulb).- See Also:
-
NORMAL
public static final int NORMALA constant for the 'normal' range.- See Also:
-
WARNING
public static final int WARNINGA constant for the 'warning' range.- See Also:
-
CRITICAL
public static final int CRITICALA constant for the 'critical' range.- See Also:
-
AXIS_GAP
protected static final int AXIS_GAPThe axis gap.- See Also:
-
UNITS
The unit strings. -
RANGE_LOW
protected static final int RANGE_LOWIndex for low value in subrangeInfo matrix.- See Also:
-
RANGE_HIGH
protected static final int RANGE_HIGHIndex for high value in subrangeInfo matrix.- See Also:
-
DISPLAY_LOW
protected static final int DISPLAY_LOWIndex for display low value in subrangeInfo matrix.- See Also:
-
DISPLAY_HIGH
protected static final int DISPLAY_HIGHIndex for display high value in subrangeInfo matrix.- See Also:
-
DEFAULT_LOWER_BOUND
protected static final double DEFAULT_LOWER_BOUNDThe default lower bound.- See Also:
-
DEFAULT_UPPER_BOUND
protected static final double DEFAULT_UPPER_BOUNDThe default upper bound.- See Also:
-
DEFAULT_BULB_RADIUS
protected static final int DEFAULT_BULB_RADIUSThe default bulb radius.- See Also:
-
DEFAULT_COLUMN_RADIUS
protected static final int DEFAULT_COLUMN_RADIUSThe default column radius.- See Also:
-
DEFAULT_GAP
protected static final int DEFAULT_GAPThe 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
public double 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
public void setLowerBound(double lower) Sets the lower bound for the thermometer.- Parameters:
lower
- the lower bound.- See Also:
-
getUpperBound
public double 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
public void setUpperBound(double upper) Sets the upper bound for the thermometer.- Parameters:
upper
- the upper bound.- See Also:
-
setRange
public void setRange(double lower, double upper) 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
public int 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
public void setUnits(int u) 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
public int getValueLocation()Returns a code indicating the location at which the value label is displayed. -
setValueLocation
public void setValueLocation(int location) 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
public int getAxisLocation()Returns the axis location. -
setAxisLocation
public void setAxisLocation(int location) 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
public void setSubrangeInfo(int range, double low, double hi) 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
public void setSubrange(int range, double low, double high) Sets the bounds for a subrange.- Parameters:
range
- the range type.low
- the low value.high
- the high value.
-
setDisplayRange
public void setDisplayRange(int range, double low, double high) 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
public boolean 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
public 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.- Parameters:
flag
- the flag.
-
getUseSubrangePaint
public boolean getUseSubrangePaint()Returns a flag that controls whether or not the mercury color changes for each subrange.- Returns:
- The flag.
- See Also:
-
setUseSubrangePaint
public void setUseSubrangePaint(boolean flag) Sets the range colour change option.- Parameters:
flag
- the new range colour change option- See Also:
-
getBulbRadius
public int getBulbRadius()Returns the bulb radius, in Java2D units.- Returns:
- The bulb radius.
-
setBulbRadius
public void setBulbRadius(int r) 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
public int getBulbDiameter()Returns the bulb diameter, which is always twice the value returned bygetBulbRadius()
.- Returns:
- The bulb diameter.
-
getColumnRadius
public int getColumnRadius()Returns the column radius, in Java2D units.- Returns:
- The column radius.
- See Also:
-
setColumnRadius
public void setColumnRadius(int r) Sets the column radius (in Java2D units) and sends aPlotChangeEvent
to all registered listeners.- Parameters:
r
- the new radius.- See Also:
-
getColumnDiameter
public int getColumnDiameter()Returns the column diameter, which is always twice the value returned bygetColumnRadius()
.- Returns:
- The column diameter.
-
getGap
public int getGap()Returns the gap, in Java2D units, between the two outlines that represent the thermometer.- Returns:
- The gap.
- See Also:
-
setGap
public 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.- 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
public void zoom(double percent) 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
protected void 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
protected static boolean isValidNumber(double d) 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
public boolean isDomainZoomable()Returnsfalse
.- Specified by:
isDomainZoomable
in interfaceZoomable
- Returns:
- A boolean.
- See Also:
-
isRangeZoomable
public boolean isRangeZoomable()Returnstrue
.- Specified by:
isRangeZoomable
in interfaceZoomable
- Returns:
- A boolean.
- See Also:
-
dispose
public void dispose()- Specified by:
dispose
in interfaceDisposable
-