Layout-Probleme unter Swing

MultiCoder

Mitglied
Hallo zusammen!
Ich bin dabei, ein Renderprogramm für Fraktale zu schreiben, allerdings hab ich noch ein kleines Problem:
Ich habe ein GUI mit einer Toolbar an der Seite, die mit einem vertikalen BoxLayout strukturiert ist. Das Problem ist, dass die Label über den Bedienelementen, ebenso wie die Buttons zum rendern und speichern nicht rechtsbündig sind, obwohl sie das sein sollten. Als ich eine JComboBox eingefügt habe, standen die Label sogar zentriert!
Wie kann man das beheben?!
Java:
public JLabel label_type = new JLabel("Fraktaltyp:");
	public JComboBox<String> fraktal_type = new JComboBox<String>();
	public JLabel label_c = new JLabel("c=");
	public JComplexInput input_c = new JComplexInput(new Complex(0, 1));
	public JLabel label_iter = new JLabel("Iterationen:");
	public JTextField input_iter = new JTextField("255");
	public JLabel label_scale = new JLabel("Skalierung:");
	public JTextField input_scale = new JTextField("0.035");
	public JLabel label_center = new JLabel("Mittelpunkt:");
	public JComplexInput input_center = new JComplexInput();
	public JButton btn_calc = new JButton("Darstellen");
	public JButton btn_save = new JButton("Speichern");
	public JLabel label_pos = new JLabel("Cursor:");
	public JLabel label_mouse = new JLabel(new Complex().toString());

	public MainFrame(String title) {
		super(title);
		this.setSize(640, 480);
		this.setMinimumSize(new Dimension(250, 150));
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.add(this.container);
		this.container.setLeftComponent(this.toolbar);
		this.container.setRightComponent(this.render);
		this.container.setDividerLocation(200);
		this.container.setEnabled(false);
		this.render.setBackground(Color.BLACK);
		this.render.addMouseListener(this.screenEventHandler);
		this.render.addMouseMotionListener(this.screenEventHandler);
		this.toolbar.setLayout(new BoxLayout(this.toolbar, BoxLayout.Y_AXIS));
		this.toolbar.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
		this.label_type.setMaximumSize(new Dimension(360, 20));
		this.toolbar.add(this.label_type);
		for (FraktalCalculator fc : FraktalMaths.calculators)
			this.fraktal_type.addItem(fc.getCaption());
		this.fraktal_type.setMaximumSize(new Dimension(360, 25));
		this.toolbar.add(this.fraktal_type);
		this.label_c.setMaximumSize(new Dimension(360, 20));
		this.toolbar.add(this.label_c);
		this.input_c.setMaximumSize(new Dimension(360, 25));
		this.toolbar.add(this.input_c);
		this.label_iter.setMaximumSize(new Dimension(360, 20));
		this.toolbar.add(this.label_iter);
		this.input_iter.setMaximumSize(new Dimension(360, 25));
		this.toolbar.add(this.input_iter);
		this.label_scale.setMaximumSize(new Dimension(360, 20));
		this.toolbar.add(this.label_scale);
		this.input_scale.setMaximumSize(new Dimension(360, 25));
		this.toolbar.add(this.input_scale);
		this.label_center.setMaximumSize(new Dimension(360, 20));
		this.toolbar.add(this.label_center);
		this.input_center.setMaximumSize(new Dimension(360, 25));
		this.toolbar.add(this.input_center);
		this.toolbar.add(Box.createRigidArea(new Dimension(0, 15)));
		this.btn_calc.setMaximumSize(new Dimension(360, 30));
		this.btn_calc.addActionListener(this.eventHandler);
		this.toolbar.add(this.btn_calc);
		this.toolbar.add(Box.createRigidArea(new Dimension(0, 5)));
		this.btn_save.setMaximumSize(new Dimension(360, 30));
		this.btn_save.addActionListener(this.eventHandler);
		this.toolbar.add(this.btn_save);
		this.toolbar.add(new JPanel());
		this.label_pos.setMaximumSize(new Dimension(360, 20));
		this.toolbar.add(this.label_pos);
		this.label_mouse.setMaximumSize(new Dimension(360, 16));
		this.toolbar.add(this.label_mouse);
	}
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
[ot]
Bitte in
Java:
-Tags verwenden in Zukunft, danke! :)
[/ot]

Könntest du deinen Code auf das wesentliche reduzieren?
Du redest von einer Toolbar, welche auf der Seite des JFrames sein sollte. Im Code wird an den "container" (was ist das für ein Objekt?) jeweils links und rechts etwas angehängt.
Welche der beiden Seiten meinst du? Warum sollten diese Element rechtsbündig ausgerichtet werden? Wo gibst du an das diese ausgerichtet werden sollen?
 

MultiCoder

Mitglied
Oh, sorry, ich wusste nicht, dass es auch java tags gibt.

Also, der wichtige Code ist:
Java:
this.add(this.container);
this.container.setLeftComponent(this.toolbar);
//container ist ein JSplitPanel, nicht weiter wichtig.
this.toolbar.setLayout(new BoxLayout(this.toolbar, BoxLayout.Y_AXIS));
this.toolbar.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
//ab hier kommen die Elemente
this.label_type.setMaximumSize(new Dimension(360, 20));
//Maximalgröße, damit der Label nicht in der Höhe gestreckt wird.
this.toolbar.add(this.label_type);
//das ist die Combobox:
this.fraktal_type.setMaximumSize(new Dimension(360, 25));
this.toolbar.add(this.fraktal_type);
//Noch ein Label
this.label_c.setMaximumSize(new Dimension(360, 20));
this.toolbar.add(this.label_c);
//Eine Textbox:
this.input_c.setMaximumSize(new Dimension(360, 25));
this.toolbar.add(this.input_c);
this.label_iter.setMaximumSize(new Dimension(360, 20));
this.toolbar.add(this.label_iter);
//Noch ne Textbox
this.input_iter.setMaximumSize(new Dimension(360, 25));
this.toolbar.add(this.input_iter);
this.label_scale.setMaximumSize(new Dimension(360, 20));
this.toolbar.add(this.label_scale);
//Und noch eine
this.input_scale.setMaximumSize(new Dimension(360, 25));
this.toolbar.add(this.input_scale);
this.label_center.setMaximumSize(new Dimension(360, 20));
this.toolbar.add(this.label_center);
//Und die letzte Textbox:
this.input_center.setMaximumSize(new Dimension(360, 25));
this.toolbar.add(this.input_center);
this.toolbar.add(Box.createRigidArea(new Dimension(0, 15)));
//Noch 2 Buttons:
this.btn_calc.setMaximumSize(new Dimension(360, 30));
this.toolbar.add(this.btn_calc);
this.toolbar.add(Box.createRigidArea(new Dimension(0, 5)));
this.btn_save.setMaximumSize(new Dimension(360, 30));
this.toolbar.add(this.btn_save);

Es soll so aussehen:
Code:
Label1
[Combobox  |v]
Label2
[Textbox1    ]
Label3
[Textbox2    ]
...
[Button1     ]
[Button2     ]

Es sieht so aus:
Code:
    Label1
[Combobox  |v]
    Label2
[Textbox1    ]
    Label3
[Textbox2    ]
...
    [Button1 ]
    [Button2 ]

Wenn ich die Combobox entferne (auskommentiere) sieht es so aus:
Code:
  Label2
[Textbox1    ]
  Label3
[Textbox2    ]
...
  [Button1   ]
  [Button2   ]

Woran kann es liegen, dass die waagerechte Position bei einem senkrechten BoxLayout so verändert wird?!
 

MultiCoder

Mitglied
Ok, ich habs gemacht und es funktioniert, aber nur, wenn ich das Alignment auf CENTER stelle. Warum? Sollten die Elemente dann nicht mittig sein?!
 

Joose

Top Contributor
Warum? Sollten die Elemente dann nicht mittig sein?!

Theoretisch ja, natürlich können noch andere Faktoren hier einen Einfluss haben: Border, Übergeordnete Element, ...

EDIT: Um es zu testen würde ich diesen Teil des UI einfach in einem Dummy Fenster testen ohne weitere Layouts und Komponenten.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
B Probleme mit Layout Manager (BoxLayout) AWT, Swing, JavaFX & SWT 4
U JTabbedPane: Layout-Probleme bei addTab zur Laufzeit AWT, Swing, JavaFX & SWT 2
N Layout Probleme AWT, Swing, JavaFX & SWT 6
N Swing Probleme mit Layout AWT, Swing, JavaFX & SWT 4
R Probleme mit Layout AWT, Swing, JavaFX & SWT 6
G Probleme mit Content bei Null-Layout verändern AWT, Swing, JavaFX & SWT 7
G Probleme mit SWT und Layout AWT, Swing, JavaFX & SWT 14
E Probleme beim Layout! AWT, Swing, JavaFX & SWT 8
E Probleme beim Layout mit Buttons und CheckboxGroup AWT, Swing, JavaFX & SWT 9
G Layout Probleme AWT, Swing, JavaFX & SWT 6
D Layout Probleme. AWT, Swing, JavaFX & SWT 7
S Layout Probleme AWT, Swing, JavaFX & SWT 13
P Probleme mit Layout AWT, Swing, JavaFX & SWT 3
W Probleme mit Border- und null-Layout AWT, Swing, JavaFX & SWT 8
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben