BoxLayout

Mr.Java

Mitglied
Hallo,

seit ein paar Tagen versuche ich mich in swing einzuarbeiten. Heute habe ich versucht etwas mit einem BoxLayout zu machen:
Java:
import java.awt.*;

import javax.swing.*;


public class Fenster {

	JFrame frame = new JFrame();
	
	public static void main(String[] args) {
		Fenster fenster = new Fenster();

	}

	public Fenster(){
		
		frame.setSize(1000,1000);
		frame.setTitle("Abfrage");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		JPanel panel_oben = new JPanel();
		JPanel panel_mitte = new JPanel();
		JPanel panel_unten = new JPanel();
		
		JTextField Textfield = new JTextField();
		Textfield.setSize(900, 400);
		panel_oben.setLayout(new GridLayout());
		panel_oben.add(Textfield);
		
		
		frame.setLayout(new BoxLayout(frame, BoxLayout.Y_AXIS));
		frame.add(panel_oben);
		frame.add(panel_mitte);
		frame.setVisible(true);
	}
	
}

dabei kommt immer folgende Fehlermeldung:

Exception in thread "main" java.awt.AWTError: BoxLayout can't be shared
at javax.swing.BoxLayout.checkContainer(Unknown Source)
at javax.swing.BoxLayout.invalidateLayout(Unknown Source)
at javax.swing.BoxLayout.addLayoutComponent(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at javax.swing.JFrame.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at Fenster.<init>(Fenster.java:33)
at Fenster.main(Fenster.java:11)

Was habe ich falsch gemacht?
 

franky27

Bekanntes Mitglied
Du kannst das Layout eines JFrame ContentPanes nicht so einfach ändern. Du kannst es aber austauschen: Erstelle ein JPanel mit BoxLayout und setze es als dein neues ContentPane:
Java:
frame.setContentPane(deinPanel);
Dort kannst du dann ganz normal deine anderen Panels adden.
 
Zuletzt bearbeitet:

Mr.Java

Mitglied
Habe dies getan(hoffe es ist nun wie du meinst):
Java:
import java.awt.*;

import javax.swing.*;


public class Fenster {

	JFrame frame = new JFrame();
	
	public static void main(String[] args) {
		Fenster fenster = new Fenster();

	}

	public Fenster(){
		
		frame.setSize(1000,1000);
		frame.setTitle("Abfrage");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel hilfe = new JPanel();
		JPanel panel_oben = new JPanel();
		JPanel panel_mitte = new JPanel();
		JPanel panel_unten = new JPanel();
		
		JTextField Textfield = new JTextField();
		Textfield.setSize(900, 400);
		panel_oben.setLayout(new GridLayout());
		panel_oben.add(Textfield);
		
		frame.setContentPane(hilfe);
		hilfe.setLayout(new BoxLayout(frame, BoxLayout.Y_AXIS));
		hilfe.add(panel_oben);
		hilfe.add(panel_mitte);
		hilfe.setVisible(true);
	}
	
}

Aber nun kommt wieder eine Fehlermeldung:

Exception in thread "main" java.awt.AWTError: BoxLayout can't be shared
at javax.swing.BoxLayout.checkContainer(Unknown Source)
at javax.swing.BoxLayout.invalidateLayout(Unknown Source)
at javax.swing.BoxLayout.addLayoutComponent(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at Fenster.<init>(Fenster.java:33)
at Fenster.main(Fenster.java:11)
 

franky27

Bekanntes Mitglied
Zwei Fehler: erstens musst du dem BoxLayout den Container mitgeben der es beinhalten soll (also nicht frame, sondern hilfe). Zweitens addest du dann deine Komponenten in hilfe. Hilfe ist aber dein neues ContentPane vom Frame, also
frame.add(panel_oben) etc.
 

Mr.Java

Mitglied
Danke es hat funktioniert, aber wie kann ich den Layoutmanager dazu zwingen genau das zu machen was ich will. ( Er soll keine Größen etc. verändern)
 

Thallius

Top Contributor
Wenn du eh keine größen verändert haben willst kannst du auch ohne manager arbeiten. Das ist ja gerade das schöne am manager das er die components entsprechend resized das es immer gut aussieht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I BoxLayout zentriert Label nicht AWT, Swing, JavaFX & SWT 7
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
R Swing panels nebeneinander mit BoxLayout.X_AXIS AWT, Swing, JavaFX & SWT 4
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
I BoxLayout, FlowLayout und Komponentengrößen AWT, Swing, JavaFX & SWT 1
S BoxLayout: Anordnung der Komponenten links statt zentriert AWT, Swing, JavaFX & SWT 0
S Bei BoxLayout haben hinzugefügten Jpanels einen Versatz/Space AWT, Swing, JavaFX & SWT 0
K BoxLayout-nicht teilbar AWT, Swing, JavaFX & SWT 6
apple987123 Swing BoxLayout AWT, Swing, JavaFX & SWT 3
G Problem mit Button im Boxlayout... AWT, Swing, JavaFX & SWT 4
F Swing BoxLayout ein JTextfield wird falsch positioniert AWT, Swing, JavaFX & SWT 2
T BoxLayout AWT, Swing, JavaFX & SWT 4
P LayoutManager Komponenten einfügen (FlowLayout, BoxLayout) AWT, Swing, JavaFX & SWT 2
R BoxLayout(Y_Axis) ignoriert preferedSize von Buttons AWT, Swing, JavaFX & SWT 5
B Probleme mit Layout Manager (BoxLayout) AWT, Swing, JavaFX & SWT 4
C Swing BoxLayout: Buttongröße AWT, Swing, JavaFX & SWT 10
F BoxLayout mit gleicher größe AWT, Swing, JavaFX & SWT 2
D Swing [BoxLayout] Nur TextArea und nicht TextField vergroessen AWT, Swing, JavaFX & SWT 2
G BoxLayout: Ausrichtung der Komponenten AWT, Swing, JavaFX & SWT 2
K BoxLayout skaliert die "falschen" Elemente AWT, Swing, JavaFX & SWT 5
hdi BoxLayout mit Abstand? AWT, Swing, JavaFX & SWT 5
G BoxLayout? AWT, Swing, JavaFX & SWT 2
spacegaier BoxLayout: Buttons auf gleiche Größe bringen AWT, Swing, JavaFX & SWT 4
J Wie kann man beim BoxLayout scrollen? Keine Scrollleiste!:-( AWT, Swing, JavaFX & SWT 7
H AWTError: BoxLayout can't be shared AWT, Swing, JavaFX & SWT 1
A Probleme mit JPanel und BoxLayout AWT, Swing, JavaFX & SWT 5
J JComboBox und BoxLayout AWT, Swing, JavaFX & SWT 2
D BoxLayout in GridBagLayout AWT, Swing, JavaFX & SWT 7
O BoxLayout AWT, Swing, JavaFX & SWT 3
G BoxLayout: Abstand zwischen vertikalen Komponenten! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben