theater
Class Stage

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

public class Stage
extends Object
implements PixelArea

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.

Version:
1.0 (12.11.2008)
Author:
Dietrich Boles, Universität Oldenburg, Germany

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

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. Die Größe der Bühne kann nachträglich nicht mehr geändert werden.

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(Component 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.

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.

Parameters:
comp - die Komponente, die auf der Bühne platziert werden soll
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 alsTheaterImage-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 List<Component> getComponents(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 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. 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 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. 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 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. 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

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 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 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 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 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 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 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 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 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 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 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 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 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: Wird die Methode für einen aktiven Akteur aufgerufen, wird dieser nicht automatisch gestoppt!

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

remove

public void remove(List<Component> components)
Entfernt alle in der Liste enthaltenen Komponenten von der Bühne.

Achtung: Aktive Akteure der Liste werden nicht automatisch gestoppt!

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

setBackground

public void setBackground(String filename)
                   throws 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 images des Theaterstück-Verzeichnisses befinden
Throws:
IllegalArgumentException - wird geworfen, wenn die angegebene Datei keine gültige lesbare Bilddatei ist

setBackground

public 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 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 der Fall.

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