Verständnisfrage: Container vs. Component

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
Hey,

nachdem ich schon Stunden damit gearbeitet habe, ist mir pltözlich aufgefallen, dass ich die Methode getComponentCount() eines JFrame völlig falsch verstehe.

Ich dachte, das liefert die Anzahl der Komponenten, die dem Frame geaddet wurden, was aber nicht der Fall ist. Es liefert bei mir immer "1" zurück.

In der Beschreibung der Methode steht etwas von Container. Was ist der Unterschied zwischen einem Container und Komponenten?

Dann muss ich die Frage stellen, wie die Grösse eines Containers definiert ist? Nach der Grösse der grössten Komponente in diesem Container?

Oder falls nicht, anders gefragt: Wie bekomme ich die Grösse der grössten Komponente in einem Frame?

Interessant könnte das zB sein wenn ich will, dass sich die Klasse die dem Frame Komponenten addet, sich um ihre Anordnung nicht kümmern muss:

Code:
public class AddendeClass{
       Myframe.add(new JPanel());
       Myframe.add(new JScrollPane());
}

public class Myframe extends JFrame{

       //...
       setLayout(new BorderLayout());

	@Override
	public Component add(Component c) {

		switch (getComponentCount()) {  // nur dass diese Methode eben immer 1 returned...

		case 1:
			
			super.add(c, BorderLayout.NORTH);
			break;
		case 2:
		
			super.add(c, BorderLayout.CENTER);
			break;
		case 3:
			
			super.add(c, BorderLayout.SOUTH);
			break;
		}
		pack();
		return c;
	}
}

Um Verwirrung zu vermeiden: Wenn ich als Nichtswissender von Komponente rede, meine ich eben so Dinge wie ein JPanel, ein JLabel, ein JButton etc. Dinge halt, die ich per add() dem Frame hinzufüge.

Kann mir das einer genauer erklären mit Container und Components usw?
 
S

SlaterB

Gast
lies dir doch in der API die ersten Sätze der Beschreibung von Container und Component durch

http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Container.html

------

ein JFrame enthält nur ein ContentPane oder vielleicht noch andere Sonder-Zwischen-Objekte,

alles was du einfügst, wird in das ContentPane weitergeleitet,
interessanter ist also vielleicht

switch (getContentPane().getComponentCount())
?

-------

> Dann muss ich die Frage stellen, wie die Grösse eines Containers definiert ist?

ich definiere mal, dass ein Container keine Größe hat,
was meinst du denn damit?

getComponentCount?
getSize?
xy?
 

hdi

Top Contributor
Okay danke, contentPane ist also der Container in einem Frame.

Wegen der Grösse: Ich meinte die Dimension. Ein Container hat doch eine Dimension, oder nicht? Im Fall eines JFrames wird doch z.B. das ContentPane (=der container) beim Aufruf von pack() auf all seine Komponenten durchgescannt und die Dimension des Containers gesetzt, der im Frame liegt.

wobei Höhe = Summe der Höhe aller Komponenten im ContentPane
und Breite = breiteste Komponente im ContenPane.

oder stell ich mir das falsch vor?
 
B

Beni

Gast
hdi hat gesagt.:
Okay danke, contentPane ist also der Container in einem Frame.
Eigentlich ist das RootPane der Container, das contentPane ist nur ein Kind vom rootPane. :bae:

Wegen der Grösse: Ich meinte die Dimension. Ein Container hat doch eine Dimension, oder nicht?
Definitiv korrekt.

Im Fall eines JFrames wird doch z.B. das ContentPane (=der container) beim Aufruf von pack() auf all seine Komponenten durchgescannt und die Dimension des Containers gesetzt, der im Frame liegt.
Joa, da geht über einige Indirektionen aber grundsätzlich ist das richtig was du sagst.

wobei Höhe = Summe der Höhe aller Komponenten im ContentPane
und Breite = breiteste Komponente im ContenPane.
Das hingegen ist falsch. Die ideale Grösse wird durch verschiedene LayoutManager berechnet. Wie ein LayoutManager so eine ideal Grösse berechnet ist ihm überlassen. Einige werden die Componenten von links nach rechts zusammenzählen, andere werden auf der Seite Ränder lassen, ... du kannst von der Grösse eines Containers keine Rückschlüsse auf die Grösse der Kinder (und umgekehrt) ziehen. Wenn du die Grösse einer bestimmten Component kennen musst: nur diese eine Component kann dir darauf eine Antwort geben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JavaFX Verständnisfrage mit parametrisierten Methoden und FXML AWT, Swing, JavaFX & SWT 21
B JavaFX Verständnisfrage EventHandler<ActionEvent> Implementierung in meiner Klasse AWT, Swing, JavaFX & SWT 2
B JavaFX Grundlegende Verständnisfrage JavaFX<->Scene Builder AWT, Swing, JavaFX & SWT 12
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
S Verständnisfrage EventListener AWT, Swing, JavaFX & SWT 6
S Verständnisfrage anonye Klasse ActionListener AWT, Swing, JavaFX & SWT 4
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
hdi Swing Erstmaliges setVisible - Verständnisfrage AWT, Swing, JavaFX & SWT 5
V Verständnisfrage: Welche Positionierungskonstanten? AWT, Swing, JavaFX & SWT 4
V Verständnisfrage Text und anschließende Bildausgabe? AWT, Swing, JavaFX & SWT 6
R Verständnisfrage BufferStrategy: g.dispose() AWT, Swing, JavaFX & SWT 3
K Verständnisfrage zum CellRenderer AWT, Swing, JavaFX & SWT 4
A Verständnisfrage zur Ereignisbehandlung AWT, Swing, JavaFX & SWT 5
Z Random Butten erstellen ohne Container AWT, Swing, JavaFX & SWT 15
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
W JavaFX Tabelle zeilenweise mit Werten füllen und an Container anpassen AWT, Swing, JavaFX & SWT 23
B Swing KeyListener auf Container? AWT, Swing, JavaFX & SWT 1
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
A Swing Externe Klassen aufrufen und in einem bereits vorhandenen Container einfügen AWT, Swing, JavaFX & SWT 0
C Componente in Container (inkl. "Untercontainer") suchen und zurückgeben AWT, Swing, JavaFX & SWT 3
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
Z Swing JPanel soll größer werden als Parent Container (überlappen) AWT, Swing, JavaFX & SWT 5
H Drag-Evente nach Container wechsel AWT, Swing, JavaFX & SWT 2
J Fehlermeldung adding a window to a container AWT, Swing, JavaFX & SWT 9
S JPanel in den Container hinzufügen AWT, Swing, JavaFX & SWT 3
xehpuk Swing Erst Components, dann Container zeichnen AWT, Swing, JavaFX & SWT 2
K Container AWT, Swing, JavaFX & SWT 14
K JFrame-Größe an inneren Container anpassen AWT, Swing, JavaFX & SWT 2
J Swing Container innerhalb eines JPanels erfragen AWT, Swing, JavaFX & SWT 3
W setEnabled in Container Objekten (JScrollPane) AWT, Swing, JavaFX & SWT 5
X Instanzieren und Zuweisen vom BorderLayout an Container nicht notwendig ? AWT, Swing, JavaFX & SWT 4
B JPG in einem Container anzeigen lassen AWT, Swing, JavaFX & SWT 3
S this-Zugriff auf Container höherer Ebene AWT, Swing, JavaFX & SWT 2
P DragAndDrop zw Component und Container AWT, Swing, JavaFX & SWT 4
S SWT Lösen mit Shell, Container oder Group? AWT, Swing, JavaFX & SWT 5
D Container des JFrame zeichnet sich nicht bei Aufruf von paintAll AWT, Swing, JavaFX & SWT 9
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
D Container vor Fullscreen AWT, Swing, JavaFX & SWT 5
R Container Size Problem AWT, Swing, JavaFX & SWT 5
I Container AWT, Swing, JavaFX & SWT 6
G MouseEvents an Container weiterleiten AWT, Swing, JavaFX & SWT 8
H Benachrichtigt werden wann ein Container repainted wird? AWT, Swing, JavaFX & SWT 5
G Graphics Objekte in AWT Container einfügen AWT, Swing, JavaFX & SWT 2
A MouseEvent auf Container bzw. Frame weiterleiten AWT, Swing, JavaFX & SWT 5
S Mehrere Container AWT, Swing, JavaFX & SWT 10
T Canvas gegen Container austauschen --> GUI fehlt AWT, Swing, JavaFX & SWT 4
M Container in Frame über Button einfügen? AWT, Swing, JavaFX & SWT 4
A Container AWT, Swing, JavaFX & SWT 8
G Durchsichtiger verschiebbarer Container gesucht AWT, Swing, JavaFX & SWT 6
G problem mit anzeigen eines geänderten Container AWT, Swing, JavaFX & SWT 2
S Kann JSP mit BI nicht zum Container hinzufügen AWT, Swing, JavaFX & SWT 7
G hintergrund von JFrame/Container transparent machen AWT, Swing, JavaFX & SWT 2
C JPanel oder Container in JPanel AWT, Swing, JavaFX & SWT 2
X Container aus FocusCycle entfernen AWT, Swing, JavaFX & SWT 2
B Container aus einen andere Klasse hinbekommen ? AWT, Swing, JavaFX & SWT 5
R Component aus Container entfernen bzw. austauschen. AWT, Swing, JavaFX & SWT 6
I Hintergrundbild bei awt container AWT, Swing, JavaFX & SWT 9
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
C Swing Component bei Doppelklick löschen AWT, Swing, JavaFX & SWT 4
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
M Swing Component Resize AWT, Swing, JavaFX & SWT 7
L Eigene Component anordnen AWT, Swing, JavaFX & SWT 7
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
W Swing Component mehrfach adden AWT, Swing, JavaFX & SWT 0
H Drag component out of window AWT, Swing, JavaFX & SWT 1
A remove(Component) funktioniert nicht; JTable AWT, Swing, JavaFX & SWT 4
A Swing Focus auf gemalte Component AWT, Swing, JavaFX & SWT 5
L Swing Component alignment innerhalb einer JList AWT, Swing, JavaFX & SWT 3
M AWT Drag n Drop-Support für Component AWT, Swing, JavaFX & SWT 5
M Kein resize nach Component.setVisible() AWT, Swing, JavaFX & SWT 2
Ebenius AWT Bug in Component.getLocationOnScreen() AWT, Swing, JavaFX & SWT 7
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
B JTable Component mit String? AWT, Swing, JavaFX & SWT 4
M Eigenes Panel aus Component? AWT, Swing, JavaFX & SWT 5
H Component Zerren AWT, Swing, JavaFX & SWT 5
S Swing Component vertikal und hochizontal zentrieren? AWT, Swing, JavaFX & SWT 5
Z Component für File-Browser ähnliche Oberfläche AWT, Swing, JavaFX & SWT 6
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
V Swing remove(Component) blockiert Thread sehr lange. AWT, Swing, JavaFX & SWT 6
C Problem mit remove(Component comp) AWT, Swing, JavaFX & SWT 23
F AWT Component in OpenGL anzeigen? AWT, Swing, JavaFX & SWT 18
A Java Konsolen Component AWT, Swing, JavaFX & SWT 6
G Swing Component.toString() was bedeutet flags AWT, Swing, JavaFX & SWT 8
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
DamienX Swing Component auf mehreren Containern AWT, Swing, JavaFX & SWT 2
algorismi AWT Tranparente heavyweight component AWT, Swing, JavaFX & SWT 2
R Swing Methode add([Component]) funzt nich AWT, Swing, JavaFX & SWT 7
Developer_X AWT Component added keinen MouseListener AWT, Swing, JavaFX & SWT 7
U LayoutManager [GBL] Component aus einer Zelle löschen AWT, Swing, JavaFX & SWT 2
H Swing Illegal component position! AWT, Swing, JavaFX & SWT 2
C Flamingo Component AWT, Swing, JavaFX & SWT 2
M Doppelklick auf Component abfangen AWT, Swing, JavaFX & SWT 5
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
T Swing Component in Graphics zeichnen AWT, Swing, JavaFX & SWT 4
R Zugriff auf Component um addComponentListener() aufzurufen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben