Container Size Problem

Status
Nicht offen für weitere Antworten.

reliC

Mitglied
Hi all,

hab da so ein kleines verständnissproblem und hoffe jemand weiß ne Antwort 😀
Ich hab ein einfaches JFrame erstellt mit nem JText, JButton und JLabel. Habe die alle schön in die Layouts implementiert usw, das klappt auch alles soweit wie es soll nur verstehe ich eine sache nicht.

Wenn ich den Container dem JFrame so übergebe dann erscheint er in der richtigen größe:

Code:
....
frame.setSize(400,400);
frame.add(container1);
....

jedoch wenn ich das so mache:

Code:
....
frame.setSize(400,400);
frame.setContentPane(container1);
frame.pack();
...

dann nimmt er irgendwie ne default größe und beachtet gar nicht das setSize vom Frame. Jetzt hab ich noch zusätzlich probiert dem Container ein Size zu definieren passiert aber leider auch nix. Hat da jemand ne idee und kann mir auf die sprünge helfen? Wäre sehr nett



Greetz so far
 
Wenn du pack aufrufst, sagst du dem Frame er soll sich an seinen Content anpassen. Die Größe hängt dann also alleine vom Inhalt ab, das frame.setSize ist somit nutzlos.
 
Achso danke dann weiß ich ja schonmal wieso dann frame.setSize(); nicht wirkt.
Aber wenn sich dann die Höhe und Breite des Frames anhand des Inhalts der Container bezieht, müsste ich doch über:

Code:
....
container1.setSize(400,400);
frame.setcontentPane(container1);
...

meine Höhe und Breite des ganzen Frames gesetzt bekommen, oder über die höhe und breite des jeweiligen JButtons, der Text Area usw...?
das klappt bei mir aber gar nicht ich poste mal mein code:




Code:
...
public Widgets(){
		super("Calculator");
		
		
		Container container1 = new Container();
		Container container2 = new Container();
		Container container3 = new Container();
		
		
		container1.setLayout(new BorderLayout());
		container2.setLayout(new BorderLayout());
		container3.setLayout(new BorderLayout());
		
		
		this.c = new JButton("Clear");
		this.l = new JLabel("Ausgabe");
		this.txt = new JTextArea();
		this.c.addActionListener(this);
		this.txt.addCaretListener(this);
	
		container2.setSize(400,300);
		container3.setSize(400,100);
		container1.setSize(400,400);
		
		/*Optional
		 * this.txt.setSize(400,300);
		 * this.c.setSize(100,100);
		 * this.l.setSize(300,100);
		 */

		container2.add(this.txt, BorderLayout.CENTER);
		container3.add(this.c,BorderLayout.LINE_START);
		container3.add(this.l, BorderLayout.LINE_END);
		container1.add(container2, BorderLayout.CENTER);
		container1.add(container3, BorderLayout.SOUTH);
		
		
	
		setContentPane(container1);
		pack();
	
		
	}

...


Edit:Code änderung
 
setSize verwendet nur der LayoutMananger (und überschreibt damit deine Settings). Wie Templon richtig sagt, geht es daher über setPreferredSize, oder durch überschreiben von getPreferredSize
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben