theater
Class Stage

java.lang.Object
  extended by theater.Stage
All Implemented Interfaces:
java.io.Serializable, PixelArea

public class Stage
extends java.lang.Object
implements PixelArea, java.io.Serializable

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.

Achtung: In Solist kann maximal 1 Akteur auf der Bühne platziert werden: der Solist!

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

Version:
1.0 (03.11.2009)
Author:
Dietrich Boles, Universität Oldenburg, Germany
See Also:
Serialized Form

Constructor Summary
Stage(int noOfCols, int noOfRows, int cellSize)
          Über den Konstruktor wird die Größe der Bühne festgelegt.
 
Method Summary
 void add(Prop 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 als TheaterImage-Objekt.
 int getCellSize()
          Liefert die Größe der Zellen der Bühne in Pixeln
 java.util.List<Component> getComponents(java.lang.Class<?>... classes)
          Liefert eine Liste mit allen Komponenten bestimmter Klassen, die aktuell auf der Bühne platziert sind.
 java.util.List<Component> getComponentsAt(int column, int row, java.lang.Class<?>... classes)
          Liefert eine Liste mit allen Komponenten bestimmter Klassen, die aktuell auf einer bestimmten Zelle der Bühne platziert sind.
 java.util.List<Component> getComponentsInside(PixelArea area, java.lang.Class<?>... classes)
          Liefert eine Liste mit allen Komponenten bestimmter Klassen, deren zugeordnetes Icon vollständig innerhalb einer bestimmten PixelArea liegt.
 java.util.List<Component> getIntersectingComponents(PixelArea area, java.lang.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.
 Actor getSolist()
          liefert den aktuellen Solist
 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(java.util.List<Component> components)
          Entfernt alle Komponenten der Liste von der Bühne.
 void setBackground(java.lang.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.
 void setSize(int noOfCols, int noOfRows)
          Ändert die Größe der Bühne
 void setSize(int noOfCols, int noOfRows, int cellSize)
          Ändert die Größe der Bühne
 void setSolist(Actor solist, int col, int row)
          Platziert den Solist auf der Bühne.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Stage

public Stage(int noOfCols,
             int noOfRows,
             int cellSize)
Über den Konstruktor wird die Größe der Bühne festgelegt. Eine Bühne besteht dabei aus einem rechteckigen Gebiet, das sich aus gleichförmigen quadratischen Zellen zusammensetzt.

Parameters:
noOfCols - Anzahl der Spalten der Bühne
noOfRows - Anzahl der Reihen der Bühne
cellSize - Größe einer Zelle in Pixeln
Method Detail

add

public void add(Prop comp,
                int col,
                int row)
Platziert eine neue Komponente auf der Bühne. Angegeben werden die Spalte und Reihe der Zelle, auf der die Komponente platziert werden soll. Unter Platzierung ist dabei zu verstehen, dass der Mittelpunkt des Icons, das die Komponente repräsentiert, auf den Mittelpunkt der Zelle gesetzt wird. Da das Koordinatensystem der Bühne nicht begrenzt ist, kann eine Komponente auch außerhalb der Bühne platziert werden. Wenn die Komponente bereits auf der Bühne platziert ist, passiert nichts.

Seiteneffekt: Nach erfolgreicher Platzierung der Komponente auf der Bühne wird die Methode addedToStage der Komponente mit dem entsprechenden Stage-Objekt als Parameter aufgerufen.

Parameters:
comp - die Komponente, die auf der Bühne platziert werden soll (darf nicht null sein)
col - die Spalte, in der die Komponente platziert werden soll
row - die Reihe, in der die Komponente platziert werden soll

contains

public boolean contains(int x,
                        int y)
Überprüft, ob der angegebene Punkt mit den Koordinaten x und y innerhalb der Bühne liegt.

Specified by:
contains in interface PixelArea
Parameters:
x - x-Koordinate des Punktes
y - y-Koordinate des Punktes
Returns:
true, falls der angegebene Punkt innerhalb der Bühne liegt
See Also:
PixelArea.contains(int, int)

getBackground

public TheaterImage getBackground()
Liefert das Hintergrundbild der Bühne als TheaterImage-Objekt. Wurde kein Hintergrundbild gesetzt, wird null geliefert.

Returns:
das Hintergrundbild der Bühne als TheaterImage-Objekt

getCellSize

public int getCellSize()
Liefert die Größe der Zellen der Bühne in Pixeln

Returns:
die Größe der Zellen der Bühne in Pixeln

getComponents

public java.util.List<Component> getComponents(java.lang.Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, die aktuell auf der Bühne platziert sind. Fehlt der Parameter, werden alle Bühnen-Komponenten geliefert.

Parameters:
classes - Menge von Klassen, die bei der Suche berücksichtigt werden sollen
Returns:
Liste mit allen Bühnen-Komponenten bestimmter Klassen

getComponentsAt

public java.util.List<Component> getComponentsAt(int column,
                                                 int row,
                                                 java.lang.Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, die aktuell auf einer bestimmten Zelle der Bühne platziert sind. Werden keine Klassenobjekte übergeben, so werden alle Bühnen-Komponenten auf der entsprechenden Zelle geliefert.

Parameters:
column - Spalte der Zelle
row - Reihe der Zelle
classes - Menge von Klassen, die bei der Suche berücksichtigt werden sollen
Returns:
Liste mit allen Bühnen-Komponenten bestimmter Klassen auf der angegebenen Zelle

getComponentsInside

public java.util.List<Component> getComponentsInside(PixelArea area,
                                                     java.lang.Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, deren zugeordnetes Icon vollständig innerhalb einer bestimmten PixelArea liegt. Werden keine Klassenobjekte übergeben, so werden alle Bühnen-Komponenten innerhalb der PixelArea geliefert.

Parameters:
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
Returns:
Liste mit allen Bühnen-Komponenten bestimmter Klassen innerhalb der angegebenen PixelArea

getIntersectingComponents

public java.util.List<Component> getIntersectingComponents(PixelArea area,
                                                           java.lang.Class<?>... classes)
Liefert eine Liste mit allen Komponenten bestimmter Klassen, deren zugeordnetes Icon eine bestimmte PixelArea berührt oder schneidet. Werden keine Klassenobjekte übergeben, so werden alle Bühnen-Komponenten geliefert, die die PixelArea berühren oder schneiden.

Parameters:
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
Returns:
Liste mit allen Bühnen-Komponenten bestimmter Klassen, die die angegebene PixelArea berühren oder schneiden

getNumberOfColumns

public int getNumberOfColumns()
Liefert die Anzahl an Spalten der Bühne.

Returns:
die Anzahl an Spalten der Bühne

getNumberOfRows

public int getNumberOfRows()
Liefert die Anzahl an Reihen der Bühne.

Returns:
die Anzahl an Reihen der Bühne

getSolist

public Actor getSolist()
liefert den aktuellen Solist

Returns:
der aktuelle Solist oder null

intersects

public boolean intersects(PixelArea area)
Überprüft, ob die Bühne eine angegebene PixelArea berührt oder schneidet.

Specified by:
intersects in interface PixelArea
Parameters:
area - das Gebiet, das überprüft werden soll (darf nicht null sein)
Returns:
true, falls die Bühne die angegebenen PixelArea berührt oder schneidet
See Also:
PixelArea.intersects(theater.PixelArea)

isHandlingKeyEvents

public boolean isHandlingKeyEvents()
Überprüft, ob die Bühne Tastatur-Ereignisse behandelt. Standardmäßig ist dies in Solist nicht der Fall.

Returns:
true, falls die Bühne Tastatur-Ereignisse behandelt

isHandlingMouseEvents

public boolean isHandlingMouseEvents()
Überprüft, ob die Bühne Maus-Ereignisse behandelt. Standardmäßig ist dies in Solist nicht der Fall.

Returns:
true, falls die Bühne Maus-Ereignisse behandelt

isInside

public boolean isInside(PixelArea area)
Überprüft, ob die Bühne vollständig innerhalb der angegebenen PixelArea liegt.

Specified by:
isInside in interface PixelArea
Parameters:
area - das Gebiet, das überprüft werden soll (darf nicht null sein)
Returns:
true, falls die Bühne vollständig innerhalb der angegebenen PixelArea liegt
See Also:
PixelArea.isInside(theater.PixelArea)

keyPressed

public void keyPressed(KeyInfo e)
Wird aufgerufen, wenn während die Bühne den Focus besitzt ein keyPressed-Event eingetreten ist. Soll eine Bühne auf keyPressed-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu keyPressed-Events finden sich in der Klasse java.awt.event.KeyListener. Übergeben wird der Methode ein KeyInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingKeyEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

keyReleased

public void keyReleased(KeyInfo e)
Wird aufgerufen, wenn während die Bühne den Focus besitzt ein keyReleased-Event eingetreten ist. Soll eine Bühne auf keyReleased-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu keyReleased-Events finden sich in der Klasse java.awt.event.KeyListener. Übergeben wird der Methode ein KeyInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingKeyEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

keyTyped

public void keyTyped(KeyInfo e)
Wird aufgerufen, wenn während die Bühne den Focus besitzt ein keyTyped-Event eingetreten ist. Soll eine Bühne auf keyTyped-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu keyTyped-Events finden sich in der Klasse java.awt.event.KeyListener. Übergeben wird der Methode ein KeyInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingKeyEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mouseClicked

public 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. Soll eine Bühne auf mouseClicked-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mouseClicked-Events finden sich in der Klasse java.awt.event.MouseListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mouseDragged

public 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. Soll eine Bühne auf mouseDragged-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mouseDragged-Events finden sich in der Klasse java.awt.event.MouseMotionListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mouseEntered

public 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. Soll eine Bühne auf mouseEntered-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mouseEntered-Events finden sich in der Klasse java.awt.event.MouseListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mouseExited

public 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. Soll eine Bühne auf mouseExited-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mouseExited-Events finden sich in der Klasse java.awt.event.MouseListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mouseMoved

public 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. Soll eine Bühne auf mouseMoved-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mouseMoved-Events finden sich in der Klasse java.awt.event.MouseMotionListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mousePressed

public 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. Soll eine Bühne auf mousePressed-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mousePressed-Events finden sich in der Klasse java.awt.event.MouseListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

mouseReleased

public 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. Soll eine Bühne auf mouseReleased-Events reagieren, muss sie diese Methode entsprechend überschreiben. Genauere Informationen zu mouseReleased-Events finden sich in der Klasse java.awt.event.MouseListener. Übergeben wird der Methode ein MouseInfo-Objekt, über das Details zum eingetretenen Event abgefragt werden können.

Die Methode wird nur aufgerufen, wenn der HandlingMouseEvents-Status gesetzt ist (was standardmäßig nicht 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.

Parameters:
e - enthält Details zum eingetretenen Event

paint

public void paint()
Zeichnet die Bühne. Normalerweise ist ein Aufruf dieser Methode nicht notwendig, da die Bühne bei Änderungen automatisch aktualisiert wird. Wenn allerdings mittels der Methode getAWTImage der Klasse TheaterImage ein java.awt.image.BufferedImage-Objekt erfragt und geändert wird, muss diese Methode aufgerufen werden, wenn die Änderungen des Image unmittelbar sichtbar gemacht werden sollen.


remove

public void remove(Component comp)
Entfernt eine Komponente von der Bühne. Wenn die Komponente nicht auf der Bühne platziert ist, passiert nichts. Achtung: Der Solist kann nicht von der Bühne entfernt werden!

Parameters:
comp - die Komponente, die von der Bühne entfernt werden soll

remove

public void remove(java.util.List<Component> components)
Entfernt alle Komponenten der Liste von der Bühne. Achtung: Der Solist kann nicht von der Bühne entfernt werden!

Parameters:
components - enthält die Komponenten, die von der Bühne entfernt werden sollen

setBackground

public final void setBackground(java.lang.String filename)
                         throws java.lang.IllegalArgumentException
Ordnet der Bühne ein Hintergrundbild zu. Erlaubt sind Bilder der Formate gif, jpg und png. Das Bild wird mit der linken oberen Ecke auf die linke obere Ecke der Bühne platziert. Ist das Bild größer als die Bühne, wird rechts und/oder unten abgeschnitten. Ist das Bild kleiner als die Bühne, wird es repliziert dargestellt, bis die komplette Bühne überdeckt ist.

Parameters:
filename - Name der Bilddatei; die Datei muss sich im Unterverzeichnis image des Theaterstück-Verzeichnisses befinden
Throws:
java.lang.IllegalArgumentException - wird geworfen, wenn die angegebene Datei keine gültige lesbare Bilddatei ist

setBackground

public final void setBackground(TheaterImage image)
Ordnet der Bühne ein TheaterImage als Hintergrundbild zu. Das Bild wird mit der linken oberen Ecke auf die linke obere Ecke der Bühne platziert. Ist das Bild größer als die Bühne, wird rechts und/oder unten abgeschnitten. Ist das Bild kleiner als die Bühne, wird es repliziert dargestellt, bis die komplette Bühne überdeckt ist.

Parameters:
image - das TheaterImage, das als Hintergrundbild verwendet werden soll

setHandlingKeyEvents

public void setHandlingKeyEvents(boolean handlingKeyEvents)
Legt fest, ob die Bühne Tastatur-Ereignisse behandeln soll. Standardmäßig ist dies in Solist nicht der Fall.

Parameters:
handlingKeyEvents - true, falls die Bühne Tastatur-Ereignisse behandeln soll; false andernfalls.

setHandlingMouseEvents

public void setHandlingMouseEvents(boolean handlingMouseEvents)
Legt fest, ob die Bühne Maus-Ereignisse behandeln soll. Standardmäßig ist dies in Solist nicht der Fall.

Parameters:
handlingMouseEvents - true, falls die Bühne Maus-Ereignisse behandeln soll; false andernfalls.

setSize

public void setSize(int noOfCols,
                    int noOfRows)
Ändert die Größe der Bühne

Parameters:
noOfCols - Anzahl an Spalten
noOfRows - Anzahl an Reihen

setSize

public void setSize(int noOfCols,
                    int noOfRows,
                    int cellSize)
Ändert die Größe der Bühne

Parameters:
noOfCols - Anzahl an Spalten
noOfRows - Anzahl an Reihen
cellSize - Größe jeder Zelle

setSolist

public void setSolist(Actor solist,
                      int col,
                      int row)
Platziert den Solist auf der Bühne. Befindet sich bereits ein anderer Solist auf der Bühne, wird dieser entfernt.

Angegeben werden die Spalte und Reihe der Zelle, auf der der Solist platziert werden soll. Unter Platzierung ist dabei zu verstehen, dass der Mittelpunkt des Icons, das den Solist repräsentiert, auf den Mittelpunkt der Zelle gesetzt wird. Da das Koordinatensystem der Bühne nicht begrenzt ist, kann der Solist auch außerhalb der Bühne platziert werden. Wenn der Solist bereits auf der Bühne platziert ist, passiert nichts.

Seiteneffekt: Nach erfolgreicher Platzierung des Solist auf der Bühne wird dessen Methode addedToStage mit dem entsprechenden Stage-Objekt als Parameter aufgerufen.

Parameters:
solist - der Solist
col - Spalte, in der der Solist platziert werden soll
row - Reihe, in der der Solist platziert werden soll