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 classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
Modifier and TypeFieldDescriptionprotected org.jfree.chart.JFreeChart
The chartprotected sim.util.media.chart.ChartGenerator.ScrollableChartPanel
The panel which holds and draws the chartdouble
double
static final long
protected Box
A holder for global attributes componentsprotected String
This is set to a string indicating that the chart is invalid.protected Box
A holder for series attributes componentsprotected String
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
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addGlobalAttribute
(Component component) Adds a global attribute panel to the framevoid
Add a legend to the chart unless the chart already has one.protected abstract void
Override this to construct the appropriate kind of chart.sim.util.media.chart.ChartGenerator.ScrollableChartPanel
buildChartPanel
(org.jfree.chart.JFreeChart chart) protected void
Returns 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.JFreeChart
getChart()
Returns the underlying chart.org.jfree.chart.ChartPanel
Returns 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.int
Deprecated.Use getNumGlobalAttributesint
Returns the number of global attribute panels.int
double
double
getScale()
protected SeriesAttributes
getSeriesAttribute
(int i) protected SeriesAttributes[]
abstract int
abstract org.jfree.data.general.Dataset
getTitle()
Returns the title of the chartboolean
isFixed()
void
moveSeries
(int index, boolean up) Override this to move a series relative to other series.void
quit()
Prepares the chart to be garbage collected.void
Deletes all series from the chart.removeGlobalAttribute
(int index) Remooves the global attribute at the given index and returns it.void
removeSeries
(int index) Override this to remove a series from the chart.void
setChartPanel
(sim.util.media.chart.ChartGenerator.ScrollableChartPanel chartPanel) void
setFixed
(boolean value) void
setInvalidChartTitle
(String title) Sets the invalid chart title if any.void
setProportion
(double val) void
setScale
(double val) protected void
abstract void
setSeriesDataset
(org.jfree.data.general.Dataset obj) void
Sets the title of the chart (and the window frame).void
Starts a Quicktime movie on the given ChartGenerator.void
Stops a Quicktime movie and cleans up, flushing the remaining frames out to disk.protected void
update()
void
update
(long key, boolean newData) Key must be 0 or higher.void
updateChartLater
(long key) Posts a request to update the chart on the Swing event queue to happen next time repaints etc.void
updateChartWithin
(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, updateUI
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, 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, 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, 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)
-