Container erstellen

JAVAnnik

Bekanntes Mitglied
Hallo,
ich habe Probleme einen Container zu erstellen. Mit
Java:
Container c = f.getContentPane();
kann man ja einen Container über ein ganzes frame machen aber ich möchte Container mit einem Layoutmanager anordnen sodass ich mehere Container habe in denen ich dann objekte zum teil wieder mit dem manger anordnen kann. geht dass oder ist dass eine schlechte lösung? ich wollte halt nicht alle objekte in einem layout zusammenfassen da es sehr viele sind und in vershiedenen gruppen geordnet sind und ich dachte es wäre gut für jede gruppe einen container zu haben. hoffe auf rasche antwort.

gruß javannik
 

hdi

Top Contributor
Das Content Pane ist der Haupcontainer, in den alles reinkommt. Mit getContentPane() "machst" du den nicht, der ist schon da, du kannst ihn darüber nur abfragen. Aber ja, du kannst in diesem Content Pane wiederum andere Container schachteln. Dafür erzeugst du Instanzen von JComponent oder JPanel. Die haben auch Methoden wie setLayout() und add().

Also zB:

Java:
JPanel p1 = new JPanel();
p1.setLayout(new FlowLayout());
p1.add(...);
p1.add(...);

JPanel p2 = new JPanel();
p2.setLayout(new BorderLayout());
p2.add(...);
p2.add(...);

frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(p1);
frame.getContentPane().add(p2);

frame.pack();
 

ARadauer

Top Contributor
Einen Container über das ganze Frame? Mhn... mach dir eines bewusst: Ein Frame ist ein Container.
Klar kannst du Container in Container stecken und diese Teile über LayoutManager positionieren. in einer komplexen Gui sind ja nicht alle Elemente einfach auf dem Frame, sondern auf verschiedenen Panels gegliedert, gruppiert und verschachtelt...
 

hdi

Top Contributor
@Ardauer ich glaube der TO will einfach nur mehrere Sub-Container im Content Pane, und nicht das Content Pane austauschen.
 

JAVAnnik

Bekanntes Mitglied
ok danke an euch beide mir war nicht ganz klar was dass mit dem container auf sich hat ich wusste zwar dass panels oder frames container sind aber als ich dann Container c gelesen habe hab ich gedacht dass wär noch mal was anderes aber ich mach dass dann mit den panels danke...
 

JAVAnnik

Bekanntes Mitglied
so alles läuft soweit doch nun gibt es ein problem ich möchte ein panel in zwei gleichgroße hälfte aufteilen. in die linke kommen mehrere JComboBox untereinander in die rechte kommt eine JTable die erste combobox hat die koordinaten 0,0 in meinem layout die zweite 0,1 und so weiter die JTable at die koordinaten 1,0 sowohl die linke als auch die rechte hälfte sind eine spalte breit. nun hab ich gedacht wenn ich bei beiden weightx auf 0,5 setze sind beide gleich groß doch die rechte breitet sich aus und die linke ist ganz eng ... wie kann ich das aufteilen???
 

hdi

Top Contributor
Moment mal.. Du verwendest ja scheinbar ein GridBagLayout. Und du hast eine Table und mehrere Comboboxes innerhalb dieses Layouts. Das sind insgesamt also schon mal mehr als 2 Komponenten. Was meinst du ist aus Sicht des Layout Managers die linke und rechte "Hälfte"?

nun hab ich gedacht wenn ich bei beiden weightx auf 0,5
Bei beiden was?

weightx/y bestimmt übrigens nicht die Größe der Komponenten, sondern nur die Größenänderung bei Resize. Die (Initial-)Größe selbst setzt du per setPreferredSize. Du musst dir aber erstmal klar machen dass das GBL in deinem Fall nicht zwei Hälften sieht, sondern mehrere Zeilen und Spalten, also einzelne Zellen.
 

JAVAnnik

Bekanntes Mitglied
ja ich weiß ich hatte aber gelesen dass wenn man zwei zellen nebeneinander hat man mit weightx bei beiden mit 0,5 diese gleich breit bekommt dass stimmt wohl nicht ...
ich habe in der linken spalte 5zellen untereinander die je 1zeile hoch sind und in der rechtne spalte 1zelle die eben 5zeilen hoch ist...
 

hdi

Top Contributor
ja ich weiß ich hatte aber gelesen dass wenn man zwei zellen nebeneinander hat man mit weightx bei beiden mit 0,5 diese gleich breit bekommt dass stimmt wohl nicht ...
Wie gesagt weightx bestimmt nicht die Breite der Komponenten im eigentlichen Sinn, sondern nur inwiefern sich die Breite beim Resize verändert. Aber vllt reden wir nur aneinander vorbei.. Sind die beiden Zeilen denn anfangs gleich breit? Falls nein: wie gesagt setPreferredSize auf den Komponenten. (Das stellt man nicht über die Constraints ein)

weightx 0,5 heißt dass sich die Komponenten dann neuen Platz 50/50 teilen, das ist schon korrekt. Aber wie gesagt sie müssen erstmal anfangs gleich breit sein.
 

JAVAnnik

Bekanntes Mitglied
ich habe jetzt an jeder erdenklichen Stelle im Code diesei setPreferredSize eingesetzt und nichts ist geschehen. dann hab ich gedacht vielleiht tuts net weil es sonst mein layout zerreisen würde... also hab ich dss mal mit setSize probiert wieder an jeder stelle und es geschah wieder nichts.. ich hatte dann vermutet, dass es an GridBagConstrais.BOTH liegen könnte hab das rausgenommen aber die compoenten bleiben gleich groß....
 

hdi

Top Contributor
setSize wird von Layout Managern ignoriert. Es geht nur setPrefferedSize/setMinimumSize/setMaximumSize.

Bitte beantworte mir doch meine Frage:
Sind die beiden Zeilen denn anfangs gleich breit?

Ich versteh noch immer nicht ob du ein Problem mit dem Resize hast oder ob das Teil grundsätzlich nicht so ausschaut wie du willst...
 

JAVAnnik

Bekanntes Mitglied
also die größe vom frame verändere ich nicht ... dass frame hat immer die gleiche größe aber sie spalten sind nicht gleich groß und mit setPreferedsize ändert sich auch nichts ...
 

hdi

Top Contributor
Nein... du verstehst mich nicht. Sind die beiden "Hälften", wie auch immer du das definierst, beim Start des Programms d.h. der GUI gleich groß? Ja oder nein? Wenn nein - dann kann ein weightx daran auch nix ändern. Denn zuständig dafür ist setPrefferedSize. Und wenn du die damit nicht gleich groß kriegst, hast du ein grundlegendes Problem in deinem Layout..
 

JAVAnnik

Bekanntes Mitglied
verdammt ... dann hab ich wohl nen grundlegendes problem ... also nochmal ich habe einen frame der glecih groß bleibt. ich habe mit gridbaglayoutmanager ein layout angelegt. ich reduzier dass layout jetzt mal auf eine linke und auf eine rechte seite oder spalte oder hälfte oder wie auch immer die beim start eigentlich gleich groß sein sollten... sind sie aber nicht ... könntest du eventuell einen kleinen code posten der einfach zwei zellen nebeneinander mit setpreferredsize gleich groß macht ... vlt. mach ich ja dabei was verkehrt?
 

hdi

Top Contributor
ich reduzier dass layout jetzt mal auf eine linke und auf eine rechte seite oder spalte oder hälfte oder wie auch immer
Du kannst reduzieren wie du willst, der Layout Manager tut das nicht. Der Layout Manager sieht nicht nur zwei Hälften, sondern jede einzelne Zelle im Gitter. Da müssen die Contraints aller Komponenten stimmen.

Es würde helfen wenn du mal nen Screenshot dieses Bereichs in der GUI machst und einzeichnest was du jetzt als linke und rechte Hälfte verstehst. Dann kann ich dir ganz konkret sagen welche Komponente welche Constraints und Größe haben muss.
 

JAVAnnik

Bekanntes Mitglied
ich hab jetzt noch mal ein kleines test layout geschrieben mit lediglich 3zellen und den erkenntnissen die du mir gebracht hast und ich muss sagen das mit setPrferredSize klappt wunderbar... ich werde wohl mein vorheriges layout nochmal überprüfen müssen
 

hdi

Top Contributor
Ok. Und wg. weightx/y: Wenn du die Summe von 1 gleichmässig auf allen Komponenten verteilst werden sie beim Resize alle gleich kleiner/größer. So behälst du die Verteilung also dynamisch bei.

setPreferredSize = Initial-Größe (sofern die Verteilung auf die Zellen oder die Constraints nichts anderes sagen)
weightx/y = Größenänderung bei Resize
 

JAVAnnik

Bekanntes Mitglied
vielen dank für deine gedult ich hab das nun soweit verstanden jetzt gilts das ganze praktisch umzusetzen.... wegen weightx, kann es sein dass das nicht nur die aufteilung beim vergrößern bestimmt sondern auch die zelle auf die komplette breite streckt wenn noch platz ist??
 

hdi

Top Contributor
Wenn das fill-Constraint entsprechend gesetzt ist: JA! Und das hat nicht nur was mit der Größe zu tun, sondern auch mit der Position. Wenn das anchor-Constraint zB mittig gesetzt ist, dann verschiebt sich die Komponente auch in die Mitte des gesamten freien Platzes, wenn du ein weight gesetzt hast.
 

jgh

Top Contributor
wenn ich das richtig rausgelesen habe, willst du 2 gleichgroße Container haben?
einen für x-JComboBoxes, einen für eine JTable?

so ein Wunsch schreit förmlich nach einem GridLayout!!!
und in die JPanels p1 und p2 packst du dann mit dem entsprechenden Layout deine anderen Komponenten.
Eine vorher feststehende Anzahl von JComboboxen bspw wieder mit dem GridLayout.
Java:
public class MyFrame extends JFrame {

	public MyFrame() {
		setSize(500, 300);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new GridLayout(1, 2));
		JPanel p1 = new JPanel();
		p1.setBackground(Color.red);
		JPanel p2 = new JPanel();
		p2.setBackground(Color.black);
		add(p1);
		add(p2);
		setVisible(true);
	}

	public static void main(String[] args) throws MalformedURLException {
		new MyFrame();
	}

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
H Zeichnung in Container Java Basics - Anfänger-Themen 8
J Container Java Basics - Anfänger-Themen 1
B Schleife über einen Container Java Basics - Anfänger-Themen 7
M GUI- mehrere Komponenten auf Container adden Java Basics - Anfänger-Themen 2
Q Container sinn? Java Basics - Anfänger-Themen 3
O Container Inhalt auslesen Java Basics - Anfänger-Themen 2
N aus Container components paint Java Basics - Anfänger-Themen 2
A Schnellster Container Java Basics - Anfänger-Themen 21
N Container löschen?! Java Basics - Anfänger-Themen 3
F Container Objekt herausfinden Java Basics - Anfänger-Themen 15
M zwei JApplets in einem Container + GUI-Komponente Java Basics - Anfänger-Themen 12
D Container mit eigener Klasse Java Basics - Anfänger-Themen 5
H Container Probleme Java Basics - Anfänger-Themen 2
G Container für [key,value] elemente ? Java Basics - Anfänger-Themen 7
G unbound classpath container Java Basics - Anfänger-Themen 1
M Problem mit paint() und Container. Java Basics - Anfänger-Themen 8
C Container Java Basics - Anfänger-Themen 2
M Container Java Basics - Anfänger-Themen 2
H mehrere container Java Basics - Anfänger-Themen 2
L aufruf mit container -> ausgabe Java Basics - Anfänger-Themen 12
E Zweiten Container anlegen Java Basics - Anfänger-Themen 5
D alten Container wieder aufrufen Java Basics - Anfänger-Themen 11
G Größe vom Container abfragen. Java Basics - Anfänger-Themen 4
G Buttons listen - Probleme mit Container Java Basics - Anfänger-Themen 6
G Panel in Container einfügen Java Basics - Anfänger-Themen 7
D JTextField in einem Container, danach auslesen Java Basics - Anfänger-Themen 10
sambalmueslie Probleme mit Container und Komponenten. Java Basics - Anfänger-Themen 3
J Bilder auf Container oder alternativen Java Basics - Anfänger-Themen 2
XWing Int erstellen lassen? Java Basics - Anfänger-Themen 11
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
dcHost Java Kara Sensor erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S Programm erstellen Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
JaVaN0oB Bruchklasse erstellen Java Basics - Anfänger-Themen 9
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
K Rahmen erstellen mit mehrdimensionalem Array Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben