JButton füllt ganzes JPanel auf

  • Themenstarter Themenstarter Elltas
  • Beginndatum Beginndatum
E

Elltas

Gast
Hallo,

ich habe auf der rechten Seite ein JPanel, innerhalb von diesem JPanel möchte ich 2 JButtons übereinander anordnen.

Wenn ich das FlowLayout wähle, dann werden beide Buttons nebeneinander angeordnet.
panel1qn9d2jy6sr.png


Wenn ich das GridLayout wähle, dann erscheinen die JButtons übereinander, der Button wird aber so gross wie das ganze Gitterfeld.
panel24zy3tpchxo.png
Java:
public class Tasten extends JPanel {

	// Polymorphie Tasten: ist auch JPanel
	private JButton Sin,Cos,Tan;

	
	public Tasten(){
		
		this.setLayout(new GridLayout(2,1,0,20));
		Sin = new JButton("Sin");
		Cos = new JButton("Cos");
		
		this.add(Sin);
		this.add(Cos);
		//this.add(Tan);

		
	}// end of Konstruktor
	
	
}


Ich hätte gerne, dass die JButtons eine "vernünftige" Grösse haben (so wie im FlowLayout). Gibt es eine Möglichkeit, das GridLayout zu verwenden, ohne dass die Buttons automatisch die ganze Grösse des Feldes annehmen? Vielen Dank für alle Tipps.

mfG
Elltas
 
Zuletzt bearbeitet von einem Moderator:
Ich hätte gerne, dass die JButtons eine "vernünftige" Grösse haben (so wie im FlowLayout). Gibt es eine Möglichkeit, das GridLayout zu verwenden, ohne dass die Buttons automatisch die ganze Grösse des Feldes annehmen? Vielen Dank für alle Tipps.
Ja.
Erzeuge ein neues JPanel mit BorderLayout und lege das JPanel mit dem Grid-Layou in dessen NORTH-Bereich.
Das neue Panel legst Du dann dahin, wo Du das GridLayout-Panel vorher hattest.

Mann kann das auch mit dem GridBagLayout hin bekommen, aber davon würde ich abraten...

bye
TT
 
Eine andere Möglichkeit wäre evtl. das BoxLayout, mit dem man Komponenten untereinander anordnen kann.
 
Mann kann das auch mit dem GridBagLayout hin bekommen, aber davon würde ich abraten...
In diesem einfachen Fall sind meiner Meinung nach keine Komplikationen zu erwarten.

Ein Beispiel mit GridBagLayout:
Java:
import javax.swing.*;
import java.awt.*;

public class Tasten extends JPanel {
 
    // Polymorphie Tasten: ist auch JPanel
    private JButton sin,cos,tan;
 
    
    public Tasten() {
        
        super(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridy = 0;
        gbc.insets = new Insets(0, 10, 2, 10);
        gbc.fill = GridBagConstraints.HORIZONTAL;

        sin = new JButton("Sin");
        cos = new JButton("Cos");
        tan = new JButton("Tan");
        
        add(sin, gbc);

        gbc.gridy++;
        add(cos, gbc);

        gbc.gridy++;
        add(tan, gbc); 
        
    }// end of Konstruktor 
    
}
 
Hallo,

vielen Dank an alle Antworter, ich habe es mit dem GridBagLayout gelöst. Ich finde dies eigentlich noch ein praktisches Layout.
Timothy du hast mir von der Benützung von diesem Layout abgeraten. Gibt es, neben der etwas umständlicheren Programmierung noch weitere Nachteile vom GridBagLayout?
Vielen Dank schon jetzt für alle Antworten.

mfG
Elltas
 
Nein, das is ein Layout wie jedes andere, nur halt etwas komplizierter zum Benutzen. Welches Layout man verwendet hängt immer davon ab, was man machen will und mit welchem Layout man am liebsten arbeitet.
 
Timothy du hast mir von der Benützung von diesem Layout abgeraten. Gibt es, neben der etwas umständlicheren Programmierung noch weitere Nachteile vom GridBagLayout?
Es verführt dazu, die komplette Struktur der Oberfläche an dieser Stelle zu definieren, obwohl es oft sinnvoller ist, Die Bereiche sich selbst organisieren zu lassen.

Letztlich ist es vielleicht auch nur 'ne Frage des persönlichen Geschmacks...

Ich bisher habe ich jedenfalls noch kein Layout gehabt, bei dem GridBagLayout die beste (oder einzige) Wahl war.

bye
TT
 

Zurück
Oben