Class ChartGenerator
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,Accessible
- Direct Known Subclasses:
BoxPlotGenerator,PieChartGenerator,XYChartGenerator
Subclasses only really need to override one method: buildChart(), which creates the chart and the chartPanel and loads them into the chartHolder, then finally sets the series dataset. Subclasses will also find it convenient to override update() to update the chart specially each time it's repainted, removeSeries(index) to remove a series, or moveSeries(index, boolean) to change the order of series. In a subclass's constructor it may also modify the global attributes to make ones special to its kind of chart as well. Finally, note that ChartGenerator has no standard API for adding a series to the chart, nor any standard way to modify this series once it has been added. This is because JFreeChart has non-standard, non-consistent APIs for different kinds of charts. You will need to implement these on a per-chart basis as you see fit.
ChartGenerator displays three regions:
- The chart proper, stored in a chartPanel. This panel is in turn stored in a JScrollPane.
- The globalAttributes, a collection of Components on the top-left which control global features of the chart (its title, axis labels, etc.)
- The seriesAttributes, a scrollable collection of Components on the bottom-left which control features of each separate series in the chart.
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected org.jfree.chart.JFreeChartThe chartprotected sim.util.media.chart.ChartGenerator.ScrollableChartPanelThe panel which holds and draws the chartdoubledoublestatic final longprotected BoxA holder for global attributes componentsprotected StringThis is set to a string indicating that the chart is invalid.protected BoxA holder for series attributes componentsprotected StringFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddGlobalAttribute(Component component) Adds a global attribute panel to the framevoidAdd a legend to the chart unless the chart already has one.protected abstract voidOverride this to construct the appropriate kind of chart.sim.util.media.chart.ChartGenerator.ScrollableChartPanelbuildChartPanel(org.jfree.chart.JFreeChart chart) protected voidReturns a JFrame suitable or housing the ChartGenerator.createFrame(boolean inspector) Returns a JFrame suitable or housing the ChartGenerator.createFrame(Object simulation) Deprecated.use createFrame()org.jfree.chart.JFreeChartgetChart()Returns the underlying chart.org.jfree.chart.ChartPanelReturns the ChartPanel holding the chart.getFrame()Returns the JFrame which stores the whole chart.getGlobalAttribute(int index) Returns the global attribute panel of the given index.intDeprecated.Use getNumGlobalAttributesintReturns the number of global attribute panels.intdoubledoublegetScale()protected SeriesAttributesgetSeriesAttribute(int i) protected SeriesAttributes[]abstract intabstract org.jfree.data.general.DatasetgetTitle()Returns the title of the chartbooleanisFixed()voidmoveSeries(int index, boolean up) Override this to move a series relative to other series.voidquit()Prepares the chart to be garbage collected.voidDeletes all series from the chart.removeGlobalAttribute(int index) Remooves the global attribute at the given index and returns it.voidremoveSeries(int index) Override this to remove a series from the chart.voidsetChartPanel(sim.util.media.chart.ChartGenerator.ScrollableChartPanel chartPanel) voidsetFixed(boolean value) voidsetInvalidChartTitle(String title) Sets the invalid chart title if any.voidsetProportion(double val) voidsetScale(double val) protected voidabstract voidsetSeriesDataset(org.jfree.data.general.Dataset obj) voidSets the title of the chart (and the window frame).voidStarts a Quicktime movie on the given ChartGenerator.voidStops a Quicktime movie and cleans up, flushing the remaining frames out to disk.protected voidupdate()voidupdate(long key, boolean newData) Key must be 0 or higher.voidupdateChartLater(long key) Posts a request to update the chart on the Swing event queue to happen next time repaints etc.voidupdateChartWithin(long key, long milliseconds) Updates the inspector asynchronously sometime before the given milliseconds have transpired.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods 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, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, 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, updateMethods 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, validateTreeMethods 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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
globalAttributes
A holder for global attributes components -
seriesAttributes
A holder for series attributes components -
chart
protected org.jfree.chart.JFreeChart chartThe chart -
chartPanel
protected sim.util.media.chart.ChartGenerator.ScrollableChartPanel chartPanelThe panel which holds and draws the chart -
FORCE_KEY
public static final long FORCE_KEY- See Also:
-
invalidChartTitle
This is set to a string indicating that the chart is invalid. When the title is set in the chart, this title will be used instead. -
validChartTitle
-
DEFAULT_CHART_HEIGHT
public double DEFAULT_CHART_HEIGHT -
DEFAULT_CHART_PROPORTION
public double DEFAULT_CHART_PROPORTION
-
-
Constructor Details
-
ChartGenerator
public ChartGenerator()Generates a new ChartGenerator with a blank chart. Before anything else, buildChart() is called.
-
-
Method Details
-
setChartPanel
public void setChartPanel(sim.util.media.chart.ChartGenerator.ScrollableChartPanel chartPanel) -
getFrame
Returns the JFrame which stores the whole chart. Set in createFrame(), else null. -
getSeriesDataset
public abstract org.jfree.data.general.Dataset getSeriesDataset() -
setSeriesDataset
public abstract void setSeriesDataset(org.jfree.data.general.Dataset obj) -
update
protected void update() -
buildChart
protected abstract void buildChart()Override this to construct the appropriate kind of chart. This is the first thing called from the constructor; so certain of your instance variables may not have been set yet and you may need to set them yourself. You'll need to set the dataset. -
update
public void update(long key, boolean newData) Key must be 0 or higher. Will update only if the key passed in is different from the previously passed in key or if the key is FORCE_KEY. If newData is true, then the chart will also be written out to a movie if appropriate. -
getSeriesAttribute
-
getNumSeriesAttributes
public int getNumSeriesAttributes() -
getSeriesAttributes
-
setSeriesAttributes
-
removeSeries
public void removeSeries(int index) Override this to remove a series from the chart. Be sure to call super(...) first. -
moveSeries
public void moveSeries(int index, boolean up) Override this to move a series relative to other series. Be sure to call super(...) first. -
startMovie
public void startMovie()Starts a Quicktime movie on the given ChartGenerator. The size of the movie frame will be the size of the chart at the time this method is called. This method ought to be called from the main event loop. Most of the default movie formats provided will result in a gigantic movie, which you can re-encode using something smarter (like the Animation or Sorenson codecs) to put to a reasonable size. On the Mac, Quicktime Pro will do this quite elegantly. -
stopMovie
public void stopMovie()Stops a Quicktime movie and cleans up, flushing the remaining frames out to disk. This method ought to be called from the main event loop. -
getSeriesCount
public abstract int getSeriesCount() -
removeAllSeries
public void removeAllSeries()Deletes all series from the chart. -
quit
public void quit()Prepares the chart to be garbage collected. If you override this, be sure to call super.quit() -
getChartPanel
public org.jfree.chart.ChartPanel getChartPanel()Returns the ChartPanel holding the chart. -
addGlobalAttribute
Adds a global attribute panel to the frame -
getGlobalAttribute
Returns the global attribute panel of the given index. -
getGlobalAttributeCount
public int getGlobalAttributeCount()Deprecated.Use getNumGlobalAttributes -
getNumGlobalAttributes
public int getNumGlobalAttributes()Returns the number of global attribute panels. -
removeGlobalAttribute
Remooves the global attribute at the given index and returns it. -
setInvalidChartTitle
Sets the invalid chart title if any. If null, clears the invalid chart title and displays the actual chart title. -
setTitle
Sets the title of the chart (and the window frame). If there is an invalidChartTitle set, this is used instead and the specified title is held in storage to be used later. -
getTitle
Returns the title of the chart -
getChart
public org.jfree.chart.JFreeChart getChart()Returns the underlying chart. -
buildGlobalAttributes
-
isFixed
public boolean isFixed() -
setFixed
public void setFixed(boolean value) -
getScale
public double getScale() -
getProportion
public double getProportion() -
setScale
public void setScale(double val) -
setProportion
public void setProportion(double val) -
createFrame
Returns a JFrame suitable or housing the ChartGenerator. This frame largely calls chart.quit() when the JFrame is being closed. By default the JFrame will HIDE itself (not DISPOSE itself) when closed. -
createFrame
Returns a JFrame suitable or housing the ChartGenerator. This frame largely calls chart.quit() when the JFrame is being closed. By default the JFrame will HIDE itself (not DISPOSE itself) when closed. If inspector == true, the frame will have the look of an inspector -
createFrame
Deprecated.use createFrame() -
addLegend
public void addLegend()Add a legend to the chart unless the chart already has one. -
updateChartWithin
public void updateChartWithin(long key, long milliseconds) Updates the inspector asynchronously sometime before the given milliseconds have transpired. Once requested, further calls to request an update via this method will be ignored until the update occurs. -
updateChartLater
public void updateChartLater(long key) Posts a request to update the chart on the Swing event queue to happen next time repaints etc. happen. -
buildChartPanel
public sim.util.media.chart.ChartGenerator.ScrollableChartPanel buildChartPanel(org.jfree.chart.JFreeChart chart)
-