Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## sim.display
Class Display2D.InnerDisplay2D

    java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  sim.display.Display2D.InnerDisplay2D

All Implemented Interfaces:
  java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

Enclosing class:
  Display2D

public class Display2D.InnerDisplay2D
extends javax.swing.JComponent

The object which actually does all the drawing. Perhaps we should move this out.

See Also:
  Serialized Form

Nested Class Summary

Nested classes inherited from class javax.swing.JComponent
`javax.swing.JComponent.AccessibleJComponent`

Nested classes inherited from class java.awt.Container
`java.awt.Container.AccessibleAWTContainer`

Nested classes inherited from class java.awt.Component
`java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

Field Summary
`java.awt.RenderingHints` | `bufferedHints` Hints used to draw the buffered image to the screen
`double` | `height` The height of the display when the scale is 1.0
`java.awt.RenderingHints` | `unbufferedHints` Hints used to draw objects to the screen or to a buffer
`double` | `width` The width of the display when the scale is 1.0
`double` | `xOffset` x offset
`double` | `yOffset` y offset

Fields inherited from class javax.swing.JComponent
`accessibleContext, 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
`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
`Display2D.InnerDisplay2D(double width, double height)` Creates an InnerDisplay2D with the provided width and height.

Method Summary
`java.awt.Dimension` | `getMaximumsize()` Overloaded to return (width * scale, height * scale)
`java.awt.Dimension` | `getMinimumSize()` Overloaded to return (width * scale, height * scale)
`java.awt.Dimension` | `getPreferredSize()` Overloaded to return (width * scale, height * scale)
`java.awt.image.BufferedImage` | `paint(java.awt.Graphics g, boolean buffered)` Paints an image to the screen either buffered or unbuffered.
`java.awt.image.BufferedImage` | `paint(java.awt.Graphics graphics, boolean buffered, boolean shared)` If shared is true, this is the same as paint(graphics,buffered), and with the same warnings.
`void` | `paintComponent(java.awt.Graphics g)` Swing's equivalent of paint(Graphics g).
`void` | `paintComponent(java.awt.Graphics g, boolean buffer)` The top-level repainting method.
`void` | `paintToMovie()` Paints a movie, by writing it to the screen buffered, then encoding the buffer to disk.
`void` | `setupHints(boolean antialias, boolean antialiasText, boolean niceAlphaInterpolation, boolean niceInterpolation)` The default method for setting up the given hints.

Methods inherited from class javax.swing.JComponent
`addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getNextFocusableComponent, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### width

    public double width

  The width of the display when the scale is 1.0

### height

    public double height

  The height of the display when the scale is 1.0

### xOffset

    public double xOffset

  x offset

### yOffset

    public double yOffset

  y offset

### unbufferedHints

    public java.awt.RenderingHints unbufferedHints

  Hints used to draw objects to the screen or to a buffer

### bufferedHints

    public java.awt.RenderingHints bufferedHints

  Hints used to draw the buffered image to the screen

Constructor Detail

### Display2D.InnerDisplay2D

    public Display2D.InnerDisplay2D(double width,
                                    double height)

  Creates an InnerDisplay2D with the provided width and height.

Method Detail

### getPreferredSize

    public java.awt.Dimension getPreferredSize()

  Overloaded to return (width * scale, height * scale)

### getMinimumSize

    public java.awt.Dimension getMinimumSize()

  Overloaded to return (width * scale, height * scale)

### getMaximumsize

    public java.awt.Dimension getMaximumsize()

  Overloaded to return (width * scale, height * scale)

### paintToMovie

    public void paintToMovie()

  Paints a movie, by writing it to the screen buffered, then encoding the buffer to disk.

### setupHints

    public void setupHints(boolean antialias,
                           boolean antialiasText,
                           boolean niceAlphaInterpolation,
                           boolean niceInterpolation)

  The default method for setting up the given hints. By default they suggest that Java2D emphasize efficiency over prettiness.

### paintComponent

    public void paintComponent(java.awt.Graphics g)

  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).

### paintComponent

    public void paintComponent(java.awt.Graphics g,
                               boolean buffer)

  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

    public java.awt.image.BufferedImage paint(java.awt.Graphics g,
                                              boolean buffered)

  Paints an image to the screen either buffered or unbuffered. If buffered, the buffer is returned for your convenience. The buffer returned is SHARED, so if you want to hold onto it without it changing, you'll need to make a copy. 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.

### paint

    public java.awt.image.BufferedImage paint(java.awt.Graphics graphics,
                                              boolean buffered,
                                              boolean shared)

  If shared is true, this is the same as paint(graphics,buffered), and with the same warnings. But if but if shared is false, then the buffered image returned is yours to do with as you please -- it is not shared internally. If you need a buffered image NOW and are doing something with immediately and then throwing it away, just call paint(graphics,buffered), it's better style.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD