Advanced   Java   Services
Container
Back Next Up Home

Container ist die Basisklasse für alle Klassen, deren Objekte graphische Behälter darstellen. Container können Objekte vom Typ Component enthalten und damit auch selbst wieder Container. Die Hauptfunktion eines Containers ist das Aufnehmen von Komponenten. Dazu bietet die Klasse verschiedene add()-Methoden an.

Hier ein Auszug aus den Methoden, geordnet nach Themen.

Konstruktor
Container()Constructs a new Container.
Wichtige Methoden
ReturntypName der Methode
add/remove  Methoden für Komponenten
Component
 
add(Component comp)
Appends the specified component to the end of this container.
Component
 
add(Component comp, int index)
Adds the specified component to this container at the given position.
Component
 
add(Component comp, Object constraints)
Adds the specified component to the end of this container.
void
 
remove(Component comp)
Removes the specified component from this container.
void
 
remove(int index)
Removes the component, specified by index, from this container.
void
 
removeAll()
Removes all the components from this container.
Information über enthaltene Komponenten
Component
 
getComponent(int n)
Gets the nth component in this container.
Component[]
 
getComponents()
Gets all the components in this container.
int
 
getComponentCount()
Gets the number of components in this container.
Eventhandling
void
 
 
addContainerListener(ContainerListener l)
Adds the specified ContainerListener to receive ContainerEvents from this component.
void
 
 
removeContainerListener(ContainerListener l)
Removes the specified ContainerListener so that it no longer receives ContainerEvents from this component.
ContainerListener[]
 
getContainerListeners()
Returns an array of all the ContainerListeners registered on this container.
Layout
LayoutManager
 
getLayout()
Gets the layout manager for this container.
void
 
setLayout(LayoutManager mgr)
Sets the layout manager for this container.
void
 
doLayout()
Causes this container to lay out its components.
void
 
invalidate()
Invalidates the container.
void
 
validate()
Validates this container and all of its subcomponents.
Dimension
 
getMaximumSize()
Returns the maximum size of this container.
Dimension
 
getMinimumSize()
Returns the minimum size of this container.
Dimension
 
getPreferredSize()
Returns the preferred size of this container.
Graphik
Insets
 
getInsets()
Determines the insets of this container, which indicate the size of the container's border.
Fokushandling
FocusTraversalPolicy
 
getFocusTraversalPolicy()
Returns the focus traversal policy that will manage keyboard traversal of this Container's children, or null if this Container is not a focus cycle root.
boolean
 
isFocusCycleRoot()
Returns whether this Container is the root of a focus traversal cycle.
boolean
 
isFocusCycleRoot(Container container)
Returns whether the specified Container is the focus cycle root of this Container's focus traversal cycle.
void
 
setFocusCycleRoot(boolean focusCycleRoot)
Sets whether this Container is the root of a focus traversal cycle.
boolean
 
isFocusTraversalPolicySet()
Returns whether the focus traversal policy has been explicitly set for this Container.
void
 
setFocusTraversalPolicy(FocusTraversalPolicy policy)
Sets the focus traversal policy that will manage keyboard traversal of this Container's children, if this Container is a focus cycle root.
void
 
transferFocusDownCycle()
Transfers the focus down one focus traversal cycle.


Wie man die Methoden zum Thema Eventhandling einsetzt, findet sich in einem eigenen Kapitel über
Eventhandling.

Die Version 1.4 hat die Klasse Container um eine ganze Reihe von neuen Methoden bereichert, u.a. wurde die ganze Fokusbehandlung neu strukturiert. Eine Auflistung der neu hinzugekommenen Methoden findet sich unter

New 1.4 methods in Component and its subclasses (Summary).

Auf das neue Fokusmanagement wird eingegangen in

Neues 1.4 FokusManagement.


Top-Level-Container und Nicht-Top-Level-Container


Top-Level-Container sind solche, die eine Anbindung an die Bildschirmresourcen haben, die vom jeweiligen Betriebssystem verwaltet werden. Ohne einen Top-Level-Container gibt es keine Darstellung der anderen Komponenten oder Container. Enthalten Container Komponenten und wiederum Container, so spricht man von einer (Komponenten-)Hierarchie. Diese hat nicht direkt mit Vererbung zu tun. An der Spitze einer solchen Hierarchie steht immer ein TopLevelContainer. Ist ein Container oder eine Componente enthalten in einem Container xyz, so nennt man xyz die Elternkomponente oder Parent. Es gibt, abgesehen von den TopLevelContainern in Swing, nur drei TopLevelContainer im klassischen AWT, nämlich Window und seine zwei Ableitungen Frame und Dialog (siehe auch AWT Klassenhierarchie):

TopLevelContainer im AWT

Ein Sonderfall ist die Klasse FileDialog. Ein FileDialog ist zwar formal ein TLC, kann jedoch keine Komponenten aufnehmen. Objekte vom Typ FileDialog zeigen den betriebssystemabhängigen FileDialog und können daher nicht als Container verwendet werden.

Folgerichtig sind die beiden anderen Container-Klassen Panel und ScrollPane keine TLC.

Nicht-TopLevelContainer im AWT

Es wurde eingangs erwähnt, daß ein Container Komponenten aufnehmen kann, woraus folgt, daß ein Container auch einen Container aufnehmen kann. Hier gibt es allerdings eine wichtige Einschränkung, denn ein Top-Level-Container kann in keinen anderen Container aufgenommen werden. Es gilt die folgende Regel:

Aufnahmeregel für Container



Ein Container hat ein Layout


Da ein Container (mit Ausnahme von ScrollPane) mehrere Komponenten aufnehmen kann, stellt sich zwangsläufig die Frage, ob und wie die Komponenten angeordnet werden. Ein Container ordnet seine Komponenten im Normalfall automatisch nach einem bestimmten Schema an. Dafür sorgt ein LayoutManager, über den jeder Container verfügt. Ein Container hat dazu eine ganze Reihe von Methoden, mit denen das Layout geändert oder erneuert werden kann (siehe den obigen Auszug aus den Methoden). Für die Klasse Container selbst ist jedoch das Layout nicht gesetzt. Der Aufruf der Methode getLayout() liefert null.

Eine Übersicht über die wichtigsten Layouts bringt das Kapitel Layout.

top Back Next Up Home