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.AccessibleAWTCanvas
Nested 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_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
ConstructorDescriptionZeichenleinwand
(int width, int height) Erstellt eine neue Zeichenleinwand mit einer festen Größe. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Fügt der Zeichenleinwand eine Ebene an einem bestimmten Index hinzu.void
Fügt der Zeichenleinwand eine Ebene hinzu, die oberhalb aller bisherigen Ebenen eingefügt wird.void
Erstellt eine passendeBufferStrategy
für diese Ebene.void
Entfernt alle vorhandenen Ebenen von dieser Zeichenleinwand.void
dispose()
Löscht alle Ebenen der Zeichenebene und gibt deren Ressourcen frei.void
Zeichnet den Inhalt allerEbenen
in 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.int
Gibt die Anzahl derEbenen
in 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.boolean
Ob die Leinwand ihren Inhalt gerade zeichnet.void
boolean
removeLayer
(Layer pLayer) Entfernt die angegebene Ebene von dieser Zeichenleinwand.void
removeLayers
(Layer... removeLayers) Entfernt alle angegebenen Ebenen von dieser Zeichenleinwand.void
render()
Zeigt den aktuellen Inhalt der Zeichenleinwand an.void
Setzt das Zeichnen der Leinwand fort, falls es zuvor mitsuspendRendering()
ausgesetzt wurde.void
setSize
(int width, int height) Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.void
Pausiert das Zeichnen der Leinwand kurzzeitig.void
updateLayers
(double delta) Aktualisiert alleEbenen
, die dieser Zeichenleinwand hinzugefügt wurden.Methods inherited from class java.awt.Canvas
addNotify, createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy, update
Methods 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
Ebenen
angepasst, 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 Ebenen
ist), 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 Indexi
steht.- Parameters:
i
- Index der Ebene beginnend mit 0.layer
- Die neue Ebene.
-
getLayerCount
public int getLayerCount()Gibt die Anzahl derEbenen
in 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
i
odernull
. - Throws:
IndexOutOfBoundsException
- Falls der Index nicht existiert.
-
getLayer
Sucht die erste Ebene des angegebenen Typs aus der Liste der Ebenen. Existiert keine solche Ebene, wirdnull
zurü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,false
sonst.
-
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 passendeBufferStrategy
für diese Ebene. -
dispose
public void dispose()Löscht alle Ebenen der Zeichenebene und gibt deren Ressourcen frei. -
paint
-
draw
Zeichnet den Inhalt allerEbenen
in den Grafikkontext.- Parameters:
graphics
- Der Grafikkontext.
-
render
public void render()Zeigt den aktuellen Inhalt der Zeichenleinwand an.
-