Probleme mit Layout Manager (BoxLayout)

Box

Mitglied
Hallo!

Ich soll eine DialogBox realisieren, die folgendermaßen auszusehen hat:

http://s10.directupload.net/images/100607/rnyyj2qo.jpg

Dabei habe ich auf der linken Seite einen Text, auf der rechten Seite eine JTextBox.
Und ein Mal habe ich auf der linken Seite nichts, auf der rechten Seite aber einen Text.

Ich habe mir gedacht, dass ich einen Panel nehme und dem dann einen BoxLayout verpasse. Leider bekomme ich damit die Anordnung so nicht gebacken.
Ich könnte natürlich auch 4 Panel (1 x rechte Seite, 1 x linke obere Seite, 1 x linke mittlere Seite (leeres Feld), 1 x linke untere Seite) nehmen und jedem einen GrindLayout spendieren und dann alles der Reihe nach reinschieben. Aber irgendwie wäre das Vorgehen strukturlos.

Ich bin mir nun ziemlich sicher, dass man die geforderte Struktur mit einem BoxLayout durchaus hinbekommt.
Kann jemand helfen?
 
BoxLayout halte ich hierfür etwas schlecht. Soweit ich weiß kann man damit nur alles untereinander oder nebeneinander machen.
Für deinen Fall wäre ein GridLayout gut, sofern alle "Zellen" auf dieser Maske gleich groß sein sollen. Ich vermute aber eher, dass das nicht der Fall sein wird, zumindest würde es mir nicht gefallen. Wäre aber definitiv die einfachste Lösung.
Ich würde jedoch zum GridBagLayout greifen, aber da das nicht so simpel ist, bin ich sogar bereit die Constraints zu posten 😉



Hm, bei weiterem Überlegen: SpringLayout und GroupLayout sind sicher auch nett für dieses Problem Aber mit denen kenne ich mich kaum aus, daher bin ich hier mal subjektiv.
 
GroupLayout war ein super Vorschlag. Vielen Dank.

So sieht die Dialogbox nun aus:

http://s10.directupload.net/images/100608/qqiebiih.jpg

Könnte jemand an der Stelle den Quellcode fix überfliegen? Meine Realisierung sieht für mich etwas überdimensioniert aus:

Java:
		JLabel l1 = createLabel("Wartezeit der Gegner zu Beginn:");
		JLabel l2 = createLabel("Verzögerung eines Schusses:");
		JLabel l3 = createLabel("Wartezeit eines Gegners vor jedem Schritt:");
		JLabel l4 = createLabel("Anzahl Zeilen des Spielfeld:");
		JLabel l5 = createLabel("Anzahl Spalten des Spielfeld:");
		JLabel l6 = createLabel("Anzahl Hindernisse:");
		JLabel l7 = createLabel("Anzahl Gegner:");
		
		JTextField tf1 = createTextField();
		JTextField tf2 = createTextField();
		JTextField tf3 = createTextField();
		JTextField tf4 = createTextField();
		JTextField tf5 = createTextField();
		JTextField tf6 = createTextField();
		JTextField tf7 = createTextField();

		Checkbox box1 = createCheckbox("Zufällige Wartezeiten der Gegner", true);
		Checkbox box2 = createCheckbox("Gegner meiden Kollision mit Hindernis", true);
		Checkbox box3 = createCheckbox("Gegner meiden Kollision mit Gegnern", false);

		JButton accept = new JButton("Übernehmen");
		accept.setPreferredSize(new Dimension(284,25));
		accept.setMaximumSize((new Dimension(284,25)));
		
		JButton cancel = new JButton("Abbrechen");
		cancel.setPreferredSize(new Dimension(284,25));
		cancel.setMaximumSize((new Dimension(284,25)));
        
		layout.setHorizontalGroup(
				   layout.createSequentialGroup()
				   	.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
				   		.addComponent(l1)
				   		.addComponent(l2)
				   		.addComponent(l3)
				   		.addComponent(l4)
				   		.addComponent(l5)
				   		.addComponent(l6)
				   		.addComponent(l7)
				   		.addComponent(accept))
				   	.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
				   		.addComponent(tf1)
				   		.addComponent(tf2)
				   		.addComponent(tf3)
				   		.addComponent(box1)
				   		.addComponent(box2)
				   		.addComponent(box3)
				   		.addComponent(tf4)
				   		.addComponent(tf5)
				   		.addComponent(tf6)
				   		.addComponent(tf7)
				   		.addComponent(cancel))
		);
		
		layout.setVerticalGroup(
				   layout.createSequentialGroup()
				      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
				           .addComponent(l1)
				           .addComponent(tf1))  
				      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
						   .addComponent(l2)
						   .addComponent(tf2))
					  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
						   .addComponent(l3)
						   .addComponent(tf3))
					  .addComponent(box1)
					  .addComponent(box2)
					  .addComponent(box3) 
					  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
						    .addComponent(l4)
						    .addComponent(tf4)) 
					  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
							.addComponent(l5)
							.addComponent(tf5))
					  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
							.addComponent(l6)
							.addComponent(tf6))
					  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
							.addComponent(l7)
							.addComponent(tf7))
					  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
							.addComponent(accept)
							.addComponent(cancel))
		);
	}
 
Ohne es Zeile für Zeile gelesen zu haben: Ja, der Quelltext sieht beim GroupLayout immer so unschön aus. 🙂

Ebenius
 

Zurück
Oben