|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object theater.Stage
public class Stage
Die Gestaltung einer konkreten Bühne kann durch die Definition einer von der Klasse Stage abgeleiteten Klasse erfolgen. Eine Bühne besteht dabei aus einem rechteckigen Gebiet, das sich aus gleichförmigen quadratischen Zellen zusammensetzt. Die Größe der Bühne wird über einen Konstruktor durch die Anzahl an Spalten und Reihen sowie die Größe der Zellen in Pixeln festgelegt. Hierdurch wird ein Koordinatensystem definiert, das zum Platzieren von Komponenten, d.h. Akteuren und Requisiten, auf der Bühne dient. Das Koordinatensystem ist nicht endlich, so dass sich Akteure und Requisiten auch außerhalb der Bühne befinden können, also (zwischenzeitlich) nicht sichtbar sind.
Neben einer Menge von Getter-Methoden zum Abfragen des Zustands einer Bühne sowie Methoden zur Verwaltung von Maus- und Tastatur-Events lassen sich die Methoden der Klasse Stage einteilen in Methoden zur Gestaltung der Bühne und Methoden zur „Kollisionserkennung“.
Zu den Gestaltungsmethoden gehören add- und remove-Methoden zum Platzieren und Entfernen von Komponenten auf bzw. von der Bühne. Weiterhin existieren Methoden zum Festlegen eines Hintergrundbildes für die Bühne.
Über die Kollisionserkennungsmethoden lässt sich zur Laufzeit u. a. ermitteln, welche Komponenten sich aktuell in bestimmten Bereichen der Bühne aufhalten oder welche Komponenten (genauer gesagt deren Icons) sich berühren oder überlappen. Die Klasse Stage implementiert das Interface PixelArea und kann damit unmittelbar selbst in die Kollisionserkennung mit einbezogen werden.
Constructor Summary | |
---|---|
Stage(int noOfCols,
int noOfRows,
int cellSize)
Über den Konstruktor wird die Größe der Bühne festgelegt. |
Method Summary | |
---|---|
void |
add(Component comp,
int col,
int row)
Platziert eine neue Komponente auf der Bühne. |
boolean |
contains(int x,
int y)
Überprüft, ob der angegebene Punkt mit den Koordinaten x und y innerhalb der Bühne liegt. |
TheaterImage |
getBackground()
Liefert das Hintergrundbild der Bühne alsTheaterImage-Objekt. |
int |
getCellSize()
Liefert die Größe der Zellen der Bühne in Pixeln |
List<Component> |
getComponents(Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, die aktuell auf der Bühne platziert sind. |
List<Component> |
getComponentsAt(int column,
int row,
Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, die aktuell auf einer bestimmten Zelle der Bühne platziert sind. |
List<Component> |
getComponentsInside(PixelArea area,
Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, deren zugeordnetes Icon vollständig innerhalb einer bestimmten PixelArea liegt. |
List<Component> |
getIntersectingComponents(PixelArea area,
Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, deren zugeordnetes Icon eine bestimmte PixelArea berührt oder schneidet. |
int |
getNumberOfColumns()
Liefert die Anzahl an Spalten der Bühne. |
int |
getNumberOfRows()
Liefert die Anzahl an Reihen der Bühne. |
boolean |
intersects(PixelArea area)
Überprüft, ob die Bühne eine angegebene PixelArea berührt oder schneidet. |
boolean |
isHandlingKeyEvents()
Überprüft, ob die Bühne Tastatur-Ereignisse behandelt. |
boolean |
isHandlingMouseEvents()
Überprüft, ob die Bühne Maus-Ereignisse behandelt. |
boolean |
isInside(PixelArea area)
Überprüft, ob die Bühne vollständig innerhalb der angegebenen PixelArea liegt. |
void |
keyPressed(KeyInfo e)
Wird aufgerufen, wenn während die Bühne den Focus besitzt ein keyPressed-Event eingetreten ist. |
void |
keyReleased(KeyInfo e)
Wird aufgerufen, wenn während die Bühne den Focus besitzt ein keyReleased-Event eingetreten ist. |
void |
keyTyped(KeyInfo e)
Wird aufgerufen, wenn während die Bühne den Focus besitzt ein keyTyped-Event eingetreten ist. |
void |
mouseClicked(MouseInfo e)
Wird aufgerufen, wenn ein mouseClicked-Event auf der Bühne eingetreten ist, d.h. eine Maustaste geklickt wurde, während sich der Mauszeiger oberhalb der Bühne befindet. |
void |
mouseDragged(MouseInfo e)
Wird aufgerufen, wenn ein mouseDragged-Event auf der Bühne eingetreten ist, d.h. die Maus bei gedrückter Maustaste bewegt wurde, während sich der Mauszeiger oberhalb der Bühne befindet. |
void |
mouseEntered(MouseInfo e)
Wird aufgerufen, wenn ein mouseEntered-Event auf der Bühne eingetreten ist, d.h. der Mauszeiger auf die Bühne gezogen wird. |
void |
mouseExited(MouseInfo e)
Wird aufgerufen, wenn ein mouseExited-Event auf der Bühne eingetreten ist, d.h. der Mauszeiger die Bühne verlässt. |
void |
mouseMoved(MouseInfo e)
Wird aufgerufen, wenn ein mouseMoved-Event auf der Bühne eingetreten ist, d.h. die Maus bewegt wurde, während sich der Mauszeiger oberhalb der Bühne befindet. |
void |
mousePressed(MouseInfo e)
Wird aufgerufen, wenn ein mousePressed-Event auf der Bühne eingetreten ist, d.h. eine Maustaste gedrückt wird, während sich der Mauszeiger oberhalb der Bühne befindet. |
void |
mouseReleased(MouseInfo e)
Wird aufgerufen, wenn ein mouseReleased-Event auf der Bühne eingetreten ist, d.h. eine gedrückte Maustaste losgelassen wird, während sich der Mauszeiger oberhalb der Bühne befindet. |
void |
paint()
Zeichnet die Bühne. |
void |
remove(Component comp)
Entfernt eine Komponente von der Bühne. |
void |
remove(List<Component> components)
Entfernt alle in der Liste enthaltenen Komponenten von der Bühne. |
void |
setBackground(String filename)
Ordnet der Bühne ein Hintergrundbild zu. |
void |
setBackground(TheaterImage image)
Ordnet der Bühne ein TheaterImage als Hintergrundbild zu. |
void |
setHandlingKeyEvents(boolean handlingKeyEvents)
Legt fest, ob die Bühne Tastatur-Ereignisse behandeln soll. |
void |
setHandlingMouseEvents(boolean handlingMouseEvents)
Legt fest, ob die Bühne Maus-Ereignisse behandeln soll. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Stage(int noOfCols, int noOfRows, int cellSize)
noOfCols
- Anzahl der Spalten der BühnenoOfRows
- Anzahl der Reihen der BühnecellSize
- Größe einer Zelle in PixelnMethod Detail |
---|
public void add(Component comp, int col, int row)
Seiteneffekt: Nach erfolgreicher Platzierung der Komponente auf der Bühne wird die Methode addedToStage der Komponente mit dem entsprechenden Stage-Objekt als Parameter aufgerufen.
Wird bei laufender Simulation die Methode add für einen Akteur aufgerufen, wird anschließend automatisch dessen start-Methode aufgerufen, d.h. der Thread gestartet.
Achtung: Jede Komponente darf maximal einer Bühne zugeordnet sein. Ist bei Aufruf der Methode add die Komponente bereits einer anderen Bühne zugeordnet, muss sie bei dieser Bühne zunächst mittels remove entfernt werden. Ansonsten bleibt der Aufruf von add wirkungslos.
comp
- die Komponente, die auf der Bühne platziert werden sollcol
- die Spalte, in der die Komponente platziert werden sollrow
- die Reihe, in der die Komponente platziert werden sollpublic boolean contains(int x, int y)
contains
in interface PixelArea
x
- x-Koordinate des Punktesy
- y-Koordinate des Punktes
PixelArea.contains(int, int)
public TheaterImage getBackground()
public int getCellSize()
public List<Component> getComponents(Class<?>... classes)
classes
- Menge von Klassen, die bei der Suche berücksichtigt werden
sollen
public List<Component> getComponentsAt(int column, int row, Class<?>... classes)
column
- Spalte der Zellerow
- Reihe der Zelleclasses
- Menge von Klassen, die bei der Suche berücksichtigt werden
sollen
public List<Component> getComponentsInside(PixelArea area, Class<?>... classes)
area
- das Gebiet, in dem die Komponenten liegen sollen (darf nicht
null sein)classes
- Menge von Klassen, die bei der Suche berücksichtigt werden
sollen
public List<Component> getIntersectingComponents(PixelArea area, Class<?>... classes)
area
- das Gebiet, das die Komponenten berühren oder schneiden sollen
(darf nicht null sein)classes
- Menge von Klassen, die bei der Suche berücksichtigt werden
sollen
public int getNumberOfColumns()
public int getNumberOfRows()
public boolean intersects(PixelArea area)
intersects
in interface PixelArea
area
- das Gebiet, das überprüft werden soll (darf nicht null sein)
PixelArea.intersects(theater.PixelArea)
public boolean isHandlingKeyEvents()
public boolean isHandlingMouseEvents()
public boolean isInside(PixelArea area)
isInside
in interface PixelArea
area
- das Gebiet, das überprüft werden soll (darf nicht null sein)
PixelArea.isInside(theater.PixelArea)
public void keyPressed(KeyInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingKeyEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf keyPressed-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void keyReleased(KeyInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingKeyEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf keyReleased-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void keyTyped(KeyInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingKeyEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf keyTyped-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mouseClicked(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mouseClicked-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mouseDragged(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mouseDragged-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mouseEntered(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mouseEntered-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mouseExited(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mouseExited-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mouseMoved(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mouseMoved-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mousePressed(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mousePressed-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void mouseReleased(MouseInfo e)
Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig der Fall ist).
Sowohl die Bühne als auch Komponenten können auf mouseReleased-Events reagieren. Die Reihenfolge, in der eine Benachrichtigung erfolgt, richtet sich nach der Zeichenreihenfolge der Komponenten: Je weiter eine Komponente im Vordergrund ist, desto früher wird sie benachrichtigt. Die Bühne wird nach allen Komponenten benachrichtigt. Durch Konsumieren des Events, kann die Benachrichtigungssequenz abgebrochen werden.
e
- enthält Details zum eingetretenen Eventpublic void paint()
public void remove(Component comp)
Achtung: Wird die Methode für einen aktiven Akteur aufgerufen, wird dieser nicht automatisch gestoppt!
comp
- die Komponente, die von der Bühne entfernt werden sollpublic void remove(List<Component> components)
Achtung: Aktive Akteure der Liste werden nicht automatisch gestoppt!
components
- enthält die Komponenten, die von der Bühne entfernt werden
sollenpublic void setBackground(String filename) throws IllegalArgumentException
filename
- Name der Bilddatei; die Datei muss sich im Unterverzeichnis
images des Theaterstück-Verzeichnisses befinden
IllegalArgumentException
- wird geworfen, wenn die angegebene Datei keine gültige
lesbare Bilddatei istpublic void setBackground(TheaterImage image)
image
- das TheaterImage, das als Hintergrundbild verwendet werden
sollpublic void setHandlingKeyEvents(boolean handlingKeyEvents)
handlingKeyEvents
- true, falls die Bühne Tastatur-Ereignisse behandeln soll;
false andernfalls.public void setHandlingMouseEvents(boolean handlingMouseEvents)
handlingMouseEvents
- true, falls die Bühne Maus-Ereignisse behandeln soll; false
andernfalls.
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |