[ERLEDIGT]gui problem(genaue position von buttons ect.)

babuschka

Top Contributor
wenn ich meinen code benutze:
Java:
package MultiProgramm;


import java.awt.Font;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Gui extends JFrame {
	
	
	public JButton test;
	public JTextField erste;
	public JTextField zweite;
	private final Color color1 = new Color(0, 0, 0);

    private final Font font1 = new Font("Comic Sans MS", 0, 17);

	public Gui(){		
		super("Multi Program");
		
		test = new JButton("rechne");
		erste = new JTextField("Deine erste Zahl");
		zweite = new JTextField("deine zweite Zahl");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
		add(erste);
		add(zweite);
		add(test);
		test.setBounds(20,20,100,50);
		
		
		test.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				
			}
			
		});
	}
	
	 public void paint(Graphics g)
	   {
	        

	  
	   }
	
	 

}
erscheint ein Gui mit nur einem grossen button, der das ganze fenster füllt, wieso?
 
Zuletzt bearbeitet von einem Moderator:
Weil ein JFrame standardmässig ein BorderLayout benutzt. add(x) fügst x in die Mitte des Layouts. Und wenn du mehrere add(x)-Aufrufe hast dann wird das halt immer ersetzt und am Ende siehst du nur das, was du zuletzt hinzugefügt hast.

Das setBounds() kannst du dir übrigens sparen, das wird vom Layout Manager ignoriert.

Die Frage ist jetzt: Wie willst du die Komponenten anordnen?
 
Dann musst du:
1) auch bei den Textfeldern setBounds verwenden, und nicht nur beim Button (sonst sind die 0x0 pixel groß und du siehst nix)
2) den Layout-Manager raushauen:
Code:
setLayout(null);
(Vor dem adden!)

...dass diese Vorgehensweise zum Layout totaler Mist ist und nicht empfohlen, das muss ich dir ja jetzt nicht sagen oder?
 
Dann musst du das null-Layout verwenden:
Java:
setLayout(null);
hat aber den Nachteil, dass du auf größenveränderungen nicht reagieren kannst.
 
[erledigt] brauchste nicht vor den Titel zu schreiben, dafür gibt es die kleine Schaltfläche unten neben "Antworten".

Für leute die das gleiche Problem haben, wäre deine Lösung sicherlich auch interessant. Bitte angewöhnen: wenn du im Forum ein Problem hast und konntest es lösen, dann poste bitte auch diese Lösung.
 

Zurück
Oben