Package sim.display
Class Display2D.InnerDisplay2D
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
sim.display.Display2D.InnerDisplay2D
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
- Enclosing class:
Display2D
The object which actually does all the drawing. Perhaps we should move this out.
- See Also:
-
Nested Class Summary
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 TypeFieldDescriptionHints used to draw the buffered image to the screendouble
The height of the display when the scale is 1.0protected MouseEvent
Hints used to draw objects to the screen or to a bufferdouble
The width of the display when the scale is 1.0double
x offsetdouble
y offsetFields 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
-
Method Summary
Modifier and TypeMethodDescriptioncreateToolTipText
(Rectangle2D.Double rect, GUIState simulation) Overloaded to return (width * scale, height * scale)Overloaded to return (width * scale, height * scale)getToolTipText
(MouseEvent event) Paints an image to the screen either buffered or unbuffered.void
Swing's equivalent of paint(Graphics g).void
paintComponent
(Graphics g, boolean buffer) Deprecated.use paintComponent() or paint(...)void
Paints a movie, by drawing to a buffer, then encoding the buffer to disk, then optionally writing the buffer to the provided Graphics2D.void
Deprecated.Use Display2D.removeListeners instead.void
setupHints
(boolean antialias, boolean niceAlphaInterpolation, boolean niceInterpolation) The default method for setting up the given hints.void
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, 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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, 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, updateUI
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, getAccessibleContext, 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
-
width
public double widthThe width of the display when the scale is 1.0 -
height
public double heightThe height of the display when the scale is 1.0 -
xOffset
public double xOffsetx offset -
yOffset
public double yOffsety offset -
unbufferedHints
Hints used to draw objects to the screen or to a buffer -
bufferedHints
Hints used to draw the buffered image to the screen -
lastToolTipEvent
-
-
Method Details
-
removeListeners
public void removeListeners()Deprecated.Use Display2D.removeListeners instead. -
getPreferredSize
Overloaded to return (width * scale, height * scale)- Overrides:
getPreferredSize
in classJComponent
-
getMinimumSize
Overloaded to return (width * scale, height * scale)- Overrides:
getMinimumSize
in classJComponent
-
paintToMovie
Paints a movie, by drawing to a buffer, then encoding the buffer to disk, then optionally writing the buffer to the provided Graphics2D. If the Graphics2D is null, it's just written out to disk. This method will only write to disk when "appropriate", that is, if the current schedule has advanced to the point that a new frame is supposed to be outputted (given the frame rate of the movie). In any rate, it'll write to the Graphic2D if provided. -
setupHints
public void setupHints(boolean antialias, boolean niceAlphaInterpolation, boolean niceInterpolation) The default method for setting up the given hints. By default they suggest that Java2D emphasize efficiency over prettiness. -
createToolTip
- Overrides:
createToolTip
in classJComponent
-
getToolTipText
- Overrides:
getToolTipText
in classJComponent
-
updateToolTips
public void updateToolTips() -
createToolTipText
-
paintComponent
Swing's equivalent of paint(Graphics g). Called by repaint(). In turn calls paintComponent(g,false); You should not call this method directly. Instead you probably want to call paintComponent(Graphics, buffer).- Overrides:
paintComponent
in classJComponent
-
paintComponent
Deprecated.use paintComponent() or paint(...)The top-level repainting method. If we're writing to a movie, we do a paintToMovie (which also does a buffered paint to the screen) else we do an ordinary paint. buffer determines if we do our ordinary paints buffered or not. -
paint
Paints an image to the screen either buffered or unbuffered. If buffered, the buffer is returned for your convenience. If SHARED is true, then the buffer is shared internally, so if you want to hold onto it without it changing, you'll need to make a copy. If SHARED is false, then the buffer is given to you to do as you like and a new buffer is created next time (less efficient). This method is called from Swing when the window is resized or scrolled or whatnot, but it's also called as a result of the underlying model thread advancing a step so we can see what happened. In the second case, the method could conceivably be called both from the Swing event thread (if making a movie, or if in MacOS X) or from the underlying model thread (if in Windows or X Windows -- to change this, see Display2D.step). This is important because this if we're being called from the Swing event thread (repaint/movie/MacOS X), we must ensure that we're not updating the model at the same time the model is changing, and to do that we lock on the simulation's schedule so we know the model is done with step() methods and nothing's moving. But because we're blocking on the schedule, a deadlock opportunity arises. For example, what if some foolish person writes a step() method in the model which calls some blocking item in the Swing event thread? Then they're blocking waiting for the Swing event thread to come available again, but the event thread is blocking because we're waiting for them to get out of the model. A similar problem could arise if in implementing a portrayal's draw method the user decides to call some blocking item in Swing, because this paint() method could conceivably be called from the model itself (in Windows/XWindows), and it's possible that at the very same time the user has pressed the stop button or done some operation in Swing which is blocking waiting for the schedule. Long story short, try not to call a blocking method on Swing from inside this method.
-