Package schule.ngb.zm
Class Zeichenleinwand
java.lang.Object
java.awt.Component
java.awt.Canvas
schule.ngb.zm.Zeichenleinwand
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,Accessible
Eine Leinwand ist die Hauptkomponente einer Zeichenmaschine. Sie besteht aus
mehreren Ebenen, auf denen auf verschiedene Arten gezeichnet werden kann. Die
Ebenen lassen sich beliebig übereinander legen, ausblenden oder wieder
löschen.
Jede Ebene besitzt eine Zeichenfläche, auf der ihre Zeichnung liegt. Diese Zeichenflächen werden pro Frame einmal von "unten" nach "oben" auf diese Leinwand gezeichnet.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class java.awt.Canvas
Canvas.AccessibleAWTCanvasNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
Fields 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
ConstructorsConstructorDescriptionZeichenleinwand(int width, int height) Erstellt eine neue Zeichenleinwand mit einer festen Größe. -
Method Summary
Modifier and TypeMethodDescriptionvoidFügt der Zeichenleinwand eine Ebene an einem bestimmten Index hinzu.voidFügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen Ebenen eingefügt wird.voidErstellt eine passendeBufferStrategyfür diese Ebene.voidEntfernt alle vorhandenen Ebenen von dieser Zeichenleinwand.voiddispose()Löscht alle Ebenen der Zeichenebene und gibt deren Ressourcen frei.voidZeichnet den Inhalt allerEbenenin den Grafikkontext.getLayer(int i) Holt die Ebene am Indexi(beginnend bei 0).<L extends Layer>
LSucht die erste Ebene des angegebenen Typs aus der Liste der Ebenen.intGibt die Anzahl derEbenenin dieser Leinwand zurück.Gibt eine Kopie der Liste der bisher hinzugefügten Ebenen zurück.Sucht alle Ebenen von einem bestimmten Typ aus der Liste der Ebenen und gibt diese als Liste zurück.booleanOb die Leinwand ihren Inhalt gerade zeichnet.voidbooleanremoveLayer(Layer pLayer) Entfernt die angegebene Ebene von dieser Zeichenleinwand.voidremoveLayers(Layer... removeLayers) Entfernt alle angegebenen Ebenen von dieser Zeichenleinwand.voidrender()Zeigt den aktuellen Inhalt der Zeichenleinwand an.voidSetzt das Zeichnen der Leinwand fort, falls es zuvor mitsuspendRendering()ausgesetzt wurde.voidsetSize(int width, int height) Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.voidPausiert das Zeichnen der Leinwand kurzzeitig.voidupdateLayers(double delta) Aktualisiert alleEbenen, die dieser Zeichenleinwand hinzugefügt wurden.Methods inherited from class java.awt.Canvas
addNotify, createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy, updateMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, validate
-
Constructor Details
-
Zeichenleinwand
public Zeichenleinwand(int width, int height) Erstellt eine neue Zeichenleinwand mit einer festen Größe.- Parameters:
width- Breite der Zeichenleinwand.height- Höhe der Zeichenleinwand.
-
-
Method Details
-
isRendering
public boolean isRendering()Ob die Leinwand ihren Inhalt gerade zeichnet.- Returns:
true, wenn die Inhalte gerade gezeichnet werden.
-
suspendRendering
Pausiert das Zeichnen der Leinwand kurzzeitig.Falls die Leinwand gerade beim Zeichnen ist (
isRendering() == true, blockt die Methode den aufrufenden Thread so lange, bis das Rendern beendet ist. Danach wird die Ebene nicht mehr neu gezeichnet, bisresumeRendering()aufgerufen wird.Das Zeichnen sollte nur dann unterbrochen werden, wenn sich der Kontext der Canvas-Komponente in seinem Elterncontainer ändert, um Fehler bei einer fehlenden Container-Hierarchie zu vermeiden.
- Throws:
InterruptedException- Falls der Thread beim Warten unterbrochen wird.
-
resumeRendering
public void resumeRendering()Setzt das Zeichnen der Leinwand fort, falls es zuvor mitsuspendRendering()ausgesetzt wurde. -
setSize
public void setSize(int width, int height) Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.Bei einer Größenänderung wird auch die Größe aller bisher hinzugefügter
Ebenenangepasst, sodass sie die gesamte Leinwand füllen. -
addLayer
Fügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen Ebenen eingefügt wird.- Parameters:
layer- Die neue Ebene.
-
addLayer
Fügt der Zeichenleinwand eine Ebene an einem bestimmten Index hinzu. Wenn der Index noch nicht existiert (also größer als dieAnzahl der Ebenenist), dann wird die neue Ebene als letzte eingefügt. Die aufrufende Methode kann also nicht sicher sein, dass die neue Ebene am Ende wirklich am Indexisteht.- Parameters:
i- Index der Ebene beginnend mit 0.layer- Die neue Ebene.
-
getLayerCount
public int getLayerCount()Gibt die Anzahl derEbenenin dieser Leinwand zurück.- Returns:
- Die Anzahl der Ebenen.
-
getLayers
Gibt eine Kopie der Liste der bisher hinzugefügten Ebenen zurück.- Returns:
- Liste der Ebenen.
-
getLayer
Holt die Ebene am Indexi(beginnend bei 0).- Parameters:
i- Index der Ebene (beginnend bei 0).- Returns:
- Die Ebene am Index
iodernull. - Throws:
IndexOutOfBoundsException- Falls der Index nicht existiert.
-
getLayer
Sucht die erste Ebene des angegebenen Typs aus der Liste der Ebenen. Existiert keine solche Ebene, wirdnullzurückgegeben.- Type Parameters:
L- Typ der Ebenen, die abgefragt werden.- Parameters:
type- Klasse der Ebenen, die abgefragt werden.- Returns:
- Erste Ebene vom angegeben Typ.
-
getLayers
Sucht alle Ebenen von einem bestimmten Typ aus der Liste der Ebenen und gibt diese als Liste zurück. Die Reihenfolge in der Liste entspricht der Reihenfolge der Ebenen in der Leinwand (von unten nach oben).- Type Parameters:
L- Typ der Ebenen, die abgefragt werden.- Parameters:
type- Klasse der Ebenen, die abgefragt werden.- Returns:
- Eine Liste mit den vorhandenen Ebenen des abgefragten Typs.
-
removeLayer
Entfernt die angegebene Ebene von dieser Zeichenleinwand.- Parameters:
pLayer- Die Ebene, die entfernt werden soll.- Returns:
true, wenn die Liste vorhanden war und entfernt wurde,falsesonst.
-
removeLayers
Entfernt alle angegebenen Ebenen von dieser Zeichenleinwand.- Parameters:
removeLayers- Die Ebenen, die entfernt werden sollen.
-
clearLayers
public void clearLayers()Entfernt alle vorhandenen Ebenen von dieser Zeichenleinwand. -
updateLayers
public void updateLayers(double delta) Aktualisiert alleEbenen, die dieser Zeichenleinwand hinzugefügt wurden.- Parameters:
delta- Die Zeit seit dem letzten Aufruf in Sekunden.- See Also:
-
allocateBuffer
public void allocateBuffer()Erstellt eine passendeBufferStrategyfür diese Ebene. -
dispose
public void dispose()Löscht alle Ebenen der Zeichenebene und gibt deren Ressourcen frei. -
paint
-
draw
Zeichnet den Inhalt allerEbenenin den Grafikkontext.- Parameters:
graphics- Der Grafikkontext.
-
render
public void render()Zeigt den aktuellen Inhalt der Zeichenleinwand an.
-