Advanced
Java
Services
|
Container |
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 | |
Returntyp | Name 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. |
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
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.