Package org.jfree.chart
Class OfflineRenderingChartPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- org.jfree.chart.ChartPanel
-
- org.jfree.chart.OfflineRenderingChartPanel
-
- All Implemented Interfaces:
java.awt.event.ActionListener
,java.awt.event.MouseListener
,java.awt.event.MouseMotionListener
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.awt.print.Printable
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,ChartChangeListener
,ChartProgressListener
,OverlayChangeListener
public class OfflineRenderingChartPanel extends ChartPanel
AChartPanel
that applies offline rendering, for better performance when navigating (i.e. panning / zooming)charts
with lots of data.This chart panel uses a
SwingWorker
to perform the actualJFreeChart
rendering. While rendering, await cursor
is visible and the current buffered image of the chart will be scaled and drawn to the screen. When - while rendering - anotherrefresh
is requested, this will be either postponed until the current rendering is done or ignored when another refresh is requested.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
OfflineRenderingChartPanel.OfflineChartRenderer
protected static class
OfflineRenderingChartPanel.State
Using enum state pattern to control the 'offline' rendering-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private java.awt.image.BufferedImage
currentChartBuffer
A buffer for the rendered chart.private ChartRenderingInfo
currentChartRenderingInfo
private OfflineRenderingChartPanel.OfflineChartRenderer
pendingOfflineRenderer
A pending rendering for the chart.private static long
serialVersionUID
private OfflineRenderingChartPanel.State
state
-
Fields inherited from class org.jfree.chart.ChartPanel
COPY_COMMAND, DEFAULT_BUFFER_USED, DEFAULT_HEIGHT, DEFAULT_MAXIMUM_DRAW_HEIGHT, DEFAULT_MAXIMUM_DRAW_WIDTH, DEFAULT_MINIMUM_DRAW_HEIGHT, DEFAULT_MINIMUM_DRAW_WIDTH, DEFAULT_WIDTH, DEFAULT_ZOOM_TRIGGER_DISTANCE, localizationResources, PRINT_COMMAND, PROPERTIES_COMMAND, SAVE_COMMAND, ZOOM_IN_BOTH_COMMAND, ZOOM_IN_DOMAIN_COMMAND, ZOOM_IN_RANGE_COMMAND, ZOOM_OUT_BOTH_COMMAND, ZOOM_OUT_DOMAIN_COMMAND, ZOOM_OUT_RANGE_COMMAND, ZOOM_RESET_BOTH_COMMAND, ZOOM_RESET_DOMAIN_COMMAND, ZOOM_RESET_RANGE_COMMAND
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description OfflineRenderingChartPanel(JFreeChart chart)
Constructs a double buffered JFreeChart panel that displays the specified chart.OfflineRenderingChartPanel(JFreeChart chart, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips)
Constructs a double buffered JFreeChart panel.OfflineRenderingChartPanel(JFreeChart chart, int width, int height, int minimumDrawWidth, int minimumDrawHeight, int maximumDrawWidth, int maximumDrawHeight, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips)
Constructs a double buffered JFreeChart panel.OfflineRenderingChartPanel(JFreeChart chart, int width, int height, int minimumDrawWidth, int minimumDrawHeight, int maximumDrawWidth, int maximumDrawHeight, boolean properties, boolean copy, boolean save, boolean print, boolean zoom, boolean tooltips)
Constructs a double buffered JFreeChart panel.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
clearChartBuffer(java.awt.image.BufferedImage buffer)
private static void
copyChartRenderingInfo(ChartRenderingInfo source, ChartRenderingInfo target)
private static void
copyPlotRenderingInfo(PlotRenderingInfo source, PlotRenderingInfo target)
private static java.awt.image.BufferedImage
createChartBuffer(java.awt.Graphics2D g2, java.awt.Dimension bufferSize)
protected java.awt.image.BufferedImage
paintChartToBuffer(java.awt.Graphics2D g2, java.awt.Dimension bufferSize, java.awt.Dimension chartSize, java.awt.geom.Point2D anchor, ChartRenderingInfo info)
Paints the chart to fill the entire off-screen buffer image.void
setCursor(java.awt.Cursor cursor)
-
Methods inherited from class org.jfree.chart.ChartPanel
actionPerformed, addChartMouseListener, addOverlay, chartChanged, chartProgress, createChartPrintJob, createPopupMenu, createPopupMenu, displayPopupMenu, doCopy, doEditChartProperties, doSaveAs, getAnchor, getChart, getChartRenderingInfo, getDefaultDirectoryForSaveAs, getDismissDelay, getEntityForPoint, getFillZoomRectangle, getHorizontalAxisTrace, getHorizontalTraceLine, getInitialDelay, getListeners, getMaximumDrawHeight, getMaximumDrawWidth, getMinimumDrawHeight, getMinimumDrawWidth, getPopupMenu, getRefreshBuffer, getReshowDelay, getScaleX, getScaleY, getScreenDataArea, getScreenDataArea, getToolTipText, getVerticalAxisTrace, getVerticalTraceLine, getZoomAroundAnchor, getZoomFillPaint, getZoomInFactor, getZoomOutFactor, getZoomOutlinePaint, getZoomTriggerDistance, isDomainZoomable, isEnforceFileExtensions, isMouseWheelEnabled, isRangeZoomable, mouseClicked, mouseDragged, mouseEntered, mouseExited, mouseMoved, mousePressed, mouseReleased, overlayChanged, paintComponent, print, removeChartMouseListener, removeOverlay, restoreAutoBounds, restoreAutoDomainBounds, restoreAutoRangeBounds, scale, setAnchor, setChart, setDefaultDirectoryForSaveAs, setDismissDelay, setDisplayToolTips, setDomainZoomable, setEnforceFileExtensions, setFillZoomRectangle, setHorizontalAxisTrace, setHorizontalTraceLine, setInitialDelay, setMaximumDrawHeight, setMaximumDrawWidth, setMinimumDrawHeight, setMinimumDrawWidth, setMouseWheelEnabled, setMouseZoomable, setMouseZoomable, setPopupMenu, setRangeZoomable, setRefreshBuffer, setReshowDelay, setVerticalAxisTrace, setVerticalTraceLine, setZoomAroundAnchor, setZoomFillPaint, setZoomInFactor, setZoomOutFactor, setZoomOutlinePaint, setZoomTriggerDistance, translateJava2DToScreen, translateScreenToJava2D, updateUI, zoom, zoomInBoth, zoomInDomain, zoomInRange, zoomOutBoth, zoomOutDomain, zoomOutRange
-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
currentChartBuffer
private transient java.awt.image.BufferedImage currentChartBuffer
A buffer for the rendered chart.
-
currentChartRenderingInfo
private transient ChartRenderingInfo currentChartRenderingInfo
-
pendingOfflineRenderer
private transient OfflineRenderingChartPanel.OfflineChartRenderer pendingOfflineRenderer
A pending rendering for the chart.
-
state
private OfflineRenderingChartPanel.State state
-
-
Constructor Detail
-
OfflineRenderingChartPanel
public OfflineRenderingChartPanel(JFreeChart chart)
Constructs a double buffered JFreeChart panel that displays the specified chart.- Parameters:
chart
- the chart.
-
OfflineRenderingChartPanel
public OfflineRenderingChartPanel(JFreeChart chart, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips)
Constructs a double buffered JFreeChart panel.- Parameters:
chart
- the chart.properties
- a flag indicating whether or not the chart property editor should be available via the popup menu.save
- a flag indicating whether or not save options should be available via the popup menu.print
- a flag indicating whether or not the print option should be available via the popup menu.zoom
- a flag indicating whether or not zoom options should be added to the popup menu.tooltips
- a flag indicating whether or not tooltips should be enabled for the chart.
-
OfflineRenderingChartPanel
public OfflineRenderingChartPanel(JFreeChart chart, int width, int height, int minimumDrawWidth, int minimumDrawHeight, int maximumDrawWidth, int maximumDrawHeight, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips)
Constructs a double buffered JFreeChart panel.- Parameters:
chart
- the chart.width
- the preferred width of the panel.height
- the preferred height of the panel.minimumDrawWidth
- the minimum drawing width.minimumDrawHeight
- the minimum drawing height.maximumDrawWidth
- the maximum drawing width.maximumDrawHeight
- the maximum drawing height.properties
- a flag indicating whether or not the chart property editor should be available via the popup menu.save
- a flag indicating whether or not save options should be available via the popup menu.print
- a flag indicating whether or not the print option should be available via the popup menu.zoom
- a flag indicating whether or not zoom options should be added to the popup menu.tooltips
- a flag indicating whether or not tooltips should be enabled for the chart.
-
OfflineRenderingChartPanel
public OfflineRenderingChartPanel(JFreeChart chart, int width, int height, int minimumDrawWidth, int minimumDrawHeight, int maximumDrawWidth, int maximumDrawHeight, boolean properties, boolean copy, boolean save, boolean print, boolean zoom, boolean tooltips)
Constructs a double buffered JFreeChart panel.- Parameters:
chart
- the chart.width
- the preferred width of the panel.height
- the preferred height of the panel.minimumDrawWidth
- the minimum drawing width.minimumDrawHeight
- the minimum drawing height.maximumDrawWidth
- the maximum drawing width.maximumDrawHeight
- the maximum drawing height.properties
- a flag indicating whether or not the chart property editor should be available via the popup menu.copy
- a flag indicating whether or not a copy option should be available via the popup menu.save
- a flag indicating whether or not save options should be available via the popup menu.print
- a flag indicating whether or not the print option should be available via the popup menu.zoom
- a flag indicating whether or not zoom options should be added to the popup menu.tooltips
- a flag indicating whether or not tooltips should be enabled for the chart.
-
-
Method Detail
-
paintChartToBuffer
protected java.awt.image.BufferedImage paintChartToBuffer(java.awt.Graphics2D g2, java.awt.Dimension bufferSize, java.awt.Dimension chartSize, java.awt.geom.Point2D anchor, ChartRenderingInfo info)
Description copied from class:ChartPanel
Paints the chart to fill the entire off-screen buffer image.- Overrides:
paintChartToBuffer
in classChartPanel
- Parameters:
g2
- the graphics context to create an off-screen buffer image.bufferSize
- the required off-screen buffer image size.chartSize
- the size with which the chart should be drawn (apply scaling if not equal tobufferSize
).anchor
- the anchor point (in Java2D space) for the chart (null
permitted).info
- records info about the drawing (null
means collect no info).- Returns:
- the off-screen buffer image to draw onto the panel.
-
setCursor
public void setCursor(java.awt.Cursor cursor)
- Overrides:
setCursor
in classjava.awt.Component
-
copyChartRenderingInfo
private static void copyChartRenderingInfo(ChartRenderingInfo source, ChartRenderingInfo target)
-
copyPlotRenderingInfo
private static void copyPlotRenderingInfo(PlotRenderingInfo source, PlotRenderingInfo target)
-
createChartBuffer
private static java.awt.image.BufferedImage createChartBuffer(java.awt.Graphics2D g2, java.awt.Dimension bufferSize)
-
clearChartBuffer
private static void clearChartBuffer(java.awt.image.BufferedImage buffer)
-
-