LayoutManager Problem bei schachteln von Layoutmanagern

Lange

Mitglied
Hallo, ich möchte, dass die beiden Buttons unterhalb von den Labels rechts angeordnet werden. Aber bei mir wird es irgendwie rechts neben den Labels angeordnet. Währe nett wenn mir jemand helfen könnte. Hier ist der Code:

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CombiLayout extends JFrame {
	Container c = getContentPane();
	JLabel label1 = new JLabel("label1");
	JLabel name = new JLabel("name");
	JLabel tel = new JLabel("tel");
	JLabel fax = new JLabel("fax");
	JLabel mail= new JLabel("mail");
	JButton button1 = new JButton("button1");
	JButton button2 = new JButton("button2");
	JPanel center = new JPanel();
	JPanel bottom = new JPanel();
	
	GridBagLayout gbl = new GridBagLayout();
	GridBagConstraints gbc = new GridBagConstraints();
	
	public CombiLayout(){
			
		c.setLayout(gbl);
		center.setLayout(new GridLayout(5,0));
		c.add(center);
		
		gbc = setGbcValues(0,0);
		center.add(label1, gbc);
		
		gbc = setGbcValues(0,1);
		center.add(name, gbc);
		
		gbc = setGbcValues(0,2);
		center.add(tel, gbc);
		
		gbc = setGbcValues(0,3);
		center.add(fax, gbc);
		
		gbc = setGbcValues(0,4);
		center.add(mail, gbc);
		
		bottom.setLayout(new FlowLayout(FlowLayout.RIGHT));
		c.add(bottom);
		
		bottom.add(button1);
		
		bottom.add(button2);
		
		pack();	
	}
	
	private GridBagConstraints setGbcValues(int x, int y){
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.gridx = x;
		gbc.gridy = y;
		
		
		return gbc;
	}

	public static void main(String[] args) {
		
		CombiLayout fenster = new CombiLayout();
		fenster.setTitle("AdressEeinabe");
		fenster.setSize(300,200);
		fenster.setVisible(true);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}
}
 

L-ectron-X

Gesperrter Benutzer
So weit, wie du beschrieben hast:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CombiLayout extends JFrame {
    private JButton button1 = new JButton("button1");
    private JButton button2 = new JButton("button2");

    public CombiLayout(String title){
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 200);
        setLocationRelativeTo(null);
        
        JPanel center = new JPanel(new GridBagLayout());
        center.add(new JLabel("label1"), setGbcValues(0,0));
        center.add(new JLabel("name"), setGbcValues(0,1));
        center.add(new JLabel("tel"), setGbcValues(0,2));
        center.add(new JLabel("fax"), setGbcValues(0,3));
        center.add(new JLabel("mail"), setGbcValues(0,4));
        add(center, BorderLayout.CENTER);
        
        JPanel bottom = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        bottom.add(button1);
        bottom.add(button2);
        add(bottom, BorderLayout.SOUTH);

        setVisible(true);
    }

    private GridBagConstraints setGbcValues(int x, int y){
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = x;
        gbc.gridy = y;
        
        return gbc;
    }

    public static void main(String[] args) {
        CombiLayout fenster = new CombiLayout("Adresseinabe");
    }
}
 

Lange

Mitglied
Danke für die Hilfe. Eine frage hätte ich noch dazu. Warum brauche ich hier Container c = getContentPane(); nicht? Ich habe gedacht des muss man immer dazu schreiben, sobald man ein Element auf das Fenster plaziert.
 

L-ectron-X

Gesperrter Benutzer
Das ist seit Java 1.5 nicht mehr nötig. Du brauchst es also nur zu schreiben, wenn du mit einem JDK kleiner 1.5 programmierst.
 

Neue Themen


Oben