LayoutManager BorderLayout im richtigen Format beschriften

compauer

Mitglied
Hallo,

eine wahrscheinlich eher dumme Frage:
ich habe die ganze GUI hinbekommen, außer diese obere Beschriftung, die will einfach nicht über die Buttons hin. Der macht da irgendein anderen Unfug, nur nicht das, was ich erwarte.

Java:
			for (int k = 0; k < 8; k++) {
				String str = "ABCDEFGH";
				String letter = str.substring(k, k + 1);
				reihegui[k] = new JLabel("        " + letter + "        ");
				panel4.add(reihegui[k]);
			}
[


Weiß jemand weiter? :rtfm:

Viele Grüße
compauer
 

Anhänge

  • 7107978Unbenannt.png
    7107978Unbenannt.png
    54,8 KB · Aufrufe: 43
Zuletzt bearbeitet von einem Moderator:

compauer

Mitglied
Also die Reihenfolge ist doch richtig???:L???:L

Oder meinst du, dass die auseinandergezogen sind?

Ein JPanel besitzt standardmäßig ja ein Flow-Layout.

Diesen kannst du dir hier mal anschauen. Mithilfe von Parameterübergabe kann man auch Zwischenräume zwischen dein einzelnen Komponenten schaffen.Java ist auch eine Insel – 15.10 Alles Auslegungssache: die Layoutmanager

Genau, ich meine das auseinanderziehen. Danke erstmal, ich werde es bald testen.
 

Fab1

Top Contributor
Daher ich ja nun weiß was du willst, dafür würden sich andere Layoutmanager sicherlich besser eignen zum Beispiel das GridLayout.

Hier mal ein KSKB hoffe konnte dir damit helfen.

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

public class Test {
	public static void main(String[] args) {
		JFrame f = new JFrame("Grid-Layout");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setLayout(new GridLayout(1, 8, 60, 3)); // 60 musst du verstehen je
													// höher je weiter sind die
													// Komponenten auseinander
													// gezogen

		JLabel[] reihegui = new JLabel[8];

		for (int k = 0; k < 8; k++) {
			String str = "ABCDEFGH";
			String letter = str.substring(k, k + 1);
			reihegui[k] = new JLabel("        " + letter + "        ");
			f.add(reihegui[k]);
		}

		f.pack();
		f.setVisible(true);
	}
}
 

bERt0r

Top Contributor
Also ich würd den Labels einfach mit setHorizontalAlignment(CENTER) sagen es soll die Buchstaben in die Mitte zeichnen und dann sie dann in ein 8er Gridlayout ohne zwischenräume packen.
 

compauer

Mitglied
Danke für die Antworten.
Ich kriege nun einigermaßen die Abstände hin, jedoch weiß ich nicht wie ich am Anfang vor dem "A" leer lassen soll. Der fängt direkt am linken Rand mit dem Buchstaben A an. ein leeres JLabel bringt da auch nicht sehr viel. Hatte schon einen GridLayout in dem oberen panel, jedoch nur mit 2 Parameter. Was bringt der letzte Parameter eigentlich? Was bringt mir das f.pack()?

EDIT:
setHorizontalAlignment(CENTER); nimmt mein Panel irgendwie nicht an.
 

bERt0r

Top Contributor
Guckst du:
Java:
import java.awt.BorderLayout;


public class GridTest extends JFrame
{
	
	private JPanel contentPane;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						GridTest frame = new GridTest();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public GridTest()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JPanel panel = new JPanel();
		contentPane.add(panel, BorderLayout.NORTH);
		panel.setLayout(new GridLayout(1, 8, 0, 0));
		
		panel.add(createLabel("A"));
		panel.add(createLabel("B"));
		panel.add(createLabel("C"));
		panel.add(createLabel("D"));
		panel.add(createLabel("E"));
		panel.add(createLabel("F"));
		panel.add(createLabel("G"));
		panel.add(createLabel("H"));
	}
	
	private JLabel createLabel(String text)
	{
		JLabel label=new JLabel(text);
		label.setHorizontalAlignment(SwingConstants.CENTER);
		return label;
	}
	
}
 

compauer

Mitglied
Guckst du:
Java:
import java.awt.BorderLayout;


public class GridTest extends JFrame
{
	
	private JPanel contentPane;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						GridTest frame = new GridTest();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public GridTest()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JPanel panel = new JPanel();
		contentPane.add(panel, BorderLayout.NORTH);
		panel.setLayout(new GridLayout(1, 8, 0, 0));
		
		panel.add(createLabel("A"));
		panel.add(createLabel("B"));
		panel.add(createLabel("C"));
		panel.add(createLabel("D"));
		panel.add(createLabel("E"));
		panel.add(createLabel("F"));
		panel.add(createLabel("G"));
		panel.add(createLabel("H"));
	}
	
	private JLabel createLabel(String text)
	{
		JLabel label=new JLabel(text);
		label.setHorizontalAlignment(SwingConstants.CENTER);
		return label;
	}
	
}

Danke erstmal für deine Mühe. Der zentriert es aber leider im oberen Panel mittig, jedoch nicht genau über die Buttons mittig. Rechts ist ja bei mir im Panel mehr Platz als links.
 

Fab1

Top Contributor
Ich weiß momentan auch nicht weiter. Schau dir am besten mal das GridBagLayout an. Ansonsten spiel dich noch ein bisschen mit den Parametern oder was es so gibt, sollte normalerweise schon so funktionieren.
 

bERt0r

Top Contributor
Java:
import java.awt.BorderLayout;

public class GridTest extends JFrame
{
	
	private JPanel schachPanel;
	private JPanel topPanel,leftPanel,schachbrettPanel;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						GridTest frame = new GridTest();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	/**
	 * Create the frame.
	 */
	public GridTest()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 410, 408);
		schachPanel = new JPanel();
		
		schachPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		
		topPanel = new JPanel();
		topPanel.setLayout(new GridLayout(1, 8, 0, 0));
		
		topPanel.add(createLabel("A"));
		topPanel.add(createLabel("B"));
		topPanel.add(createLabel("C"));
		topPanel.add(createLabel("D"));
		topPanel.add(createLabel("E"));
		topPanel.add(createLabel("F"));
		topPanel.add(createLabel("G"));
		topPanel.add(createLabel("H"));
		
		leftPanel = new JPanel();
		leftPanel.setLayout(new GridLayout(8, 1, 0, 0));
		
		leftPanel.add(createLabel("1"));
		leftPanel.add(createLabel("2"));
		leftPanel.add(createLabel("3"));
		leftPanel.add(createLabel("4"));
		leftPanel.add(createLabel("5"));
		leftPanel.add(createLabel("6"));
		leftPanel.add(createLabel("7"));
		leftPanel.add(createLabel("8"));
		
		schachbrettPanel=new JPanel()
		{
			@Override
			public void paintComponent(Graphics g)
			{
				super.paintComponent(g);
				Rectangle bounds=this.getBounds();
				Graphics2D g2=(Graphics2D)g;

				int boardSize=Math.min(bounds.width, bounds.height);
				int fieldLength=boardSize/8;
				
				g2.setColor(Color.black);
				g2.fillRect(0, 0, fieldLength*8, fieldLength*8);
				
				g2.setColor(Color.white);
				
				
				for(int i=0;i<8;i++)
				{
					for(int j=0;j<8;j++)
					{
						if((j+i)%2==0)
						{
							g2.fillRect(i*fieldLength, j*fieldLength, fieldLength, fieldLength);
						}
					}
				}	
			}
		};
		
		schachbrettPanel.setPreferredSize(new Dimension(400,400));
		
		getContentPane().add(schachPanel,BorderLayout.CENTER);
		GroupLayout groupLayout = new GroupLayout(schachPanel);
		groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
				.addComponent(leftPanel,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE)
				.addGroup(groupLayout.createParallelGroup()
						.addComponent(topPanel,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE,Short.MAX_VALUE)
						.addComponent(schachbrettPanel,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE,Short.MAX_VALUE)
						)
				.addContainerGap()
		);
		groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()
				.addComponent(topPanel,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE)
				.addGroup(groupLayout.createParallelGroup()
						.addComponent(leftPanel,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE,Short.MAX_VALUE)
						.addComponent(schachbrettPanel,GroupLayout.PREFERRED_SIZE,GroupLayout.PREFERRED_SIZE,Short.MAX_VALUE)
						)
				.addContainerGap()
		);
		
		schachPanel.setLayout(groupLayout);
		
		pack();
	}
	
	public static JLabel createLabel(String text)
	{
		JLabel label = new JLabel(text);
		label.setHorizontalAlignment(SwingConstants.CENTER);
		label.setVerticalAlignment(SwingConstants.CENTER);
		return label;
	}
}
Problem ist, dass beim resizen des Fensters darauf geachtet werden müsste, dass die Proportionen des Panels erhalten bleiben. Um das zu gewährleisten wäre es wohl am besten einen eigenen Layoutmanager zu schreiben, schau in der FAQ nach es ist nicht so schwer.
 

L-ectron-X

Gesperrter Benutzer
Ich habe mal in meinen alten Quellen gewühlt und ein vor einigen Jahren angefangenes und dann vergessenes Schachspiel gefunden. Das kannst du gerne als Grundlage benutzen.
Au jeden Fall stimmt dort die Board-Beschriftung.
Der Quellcode liegt im Jar.
 

Anhänge

  • Chess.jar
    11,6 KB · Aufrufe: 5
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
L BorderLayout in BorderLayout verknüpfen AWT, Swing, JavaFX & SWT 2
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
C Swing Geschachteltes GUI mit BorderLayout - Vertikal & horizontal Verschieben AWT, Swing, JavaFX & SWT 1
P AWT BorderLayout AWT, Swing, JavaFX & SWT 2
A BorderLayout "Center" Inhalt wechseln AWT, Swing, JavaFX & SWT 1
S Swing [CLOSED] NullPointerException bei BorderLayout() AWT, Swing, JavaFX & SWT 8
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
Q JFrame/BorderLayout AWT, Swing, JavaFX & SWT 3
A LayoutManager Höhe von NORTH beim BorderLayout ändern AWT, Swing, JavaFX & SWT 4
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M BorderLayout JPanel liegt nicht richtig an AWT, Swing, JavaFX & SWT 12
R BorderLayout AWT, Swing, JavaFX & SWT 4
C CardLayout in BorderLayout? AWT, Swing, JavaFX & SWT 36
S Problem mit BorderLayout NORTH und SOUTH AWT, Swing, JavaFX & SWT 2
T Borderlayout Ecken AWT, Swing, JavaFX & SWT 2
H Swing JInternalFrame, JDesktopPane und ein BorderLayout AWT, Swing, JavaFX & SWT 2
R Problem mit Box bzw BorderLayout AWT, Swing, JavaFX & SWT 6
G LayoutManager BorderLayout WEST Bereich auf maximale Größe beschränken AWT, Swing, JavaFX & SWT 19
P LayoutManager BorderLayout - Zweimal Norden ? AWT, Swing, JavaFX & SWT 4
E LayoutManager GridBagLayout in BorderLayout - Abstand bei Resizing AWT, Swing, JavaFX & SWT 2
R BorderLayout: EAST, CENTER, WEST AWT, Swing, JavaFX & SWT 5
2 AWT Borderlayout: Grafikelemente ein und ausblenden AWT, Swing, JavaFX & SWT 2
J LayoutManager BorderLayout - 2 Buttons in SOUTH nebeneinander platzieren? AWT, Swing, JavaFX & SWT 3
N JPanel vertikal im BorderLayout zentrieren AWT, Swing, JavaFX & SWT 2
S Anordnen von Buttons im BorderLayout AWT, Swing, JavaFX & SWT 6
F Im BorderLayout eine feste Grösse zuweisen! AWT, Swing, JavaFX & SWT 9
S JSplitpane in BorderLayout nutzen AWT, Swing, JavaFX & SWT 4
K LayoutManager Borderlayout - NORTH aktualisieren AWT, Swing, JavaFX & SWT 10
B Swing BorderLayout und JPanel AWT, Swing, JavaFX & SWT 3
A GUI Komponenten in Borderlayout zeichnen AWT, Swing, JavaFX & SWT 3
B BorderLayout AWT, Swing, JavaFX & SWT 8
S Swing BorderLayout + Backgroundcolor AWT, Swing, JavaFX & SWT 3
0din Austausch von JPanel in BorderLayout AWT, Swing, JavaFX & SWT 3
X Instanzieren und Zuweisen vom BorderLayout an Container nicht notwendig ? AWT, Swing, JavaFX & SWT 4
E AWT Formatierung in BorderLayout AWT, Swing, JavaFX & SWT 10
D Resizeverhalten BorderLayout AWT, Swing, JavaFX & SWT 3
calzone Swing und BorderLayout AWT, Swing, JavaFX & SWT 11
Strahlungsleck Problem mit dem Anzeigen von Elementen im BorderLayout AWT, Swing, JavaFX & SWT 6
R LayoutManager ähnlich BorderLayout, mit einer Ausnahme AWT, Swing, JavaFX & SWT 2
D BorderLayout.Center mit 3 Panel und dynamischer Größe AWT, Swing, JavaFX & SWT 2
P Probleme bei BorderLayout im JPanel AWT, Swing, JavaFX & SWT 7
G Komponente oben positionieren (BorderLayout) AWT, Swing, JavaFX & SWT 3
G BorderLayout - zentrieren AWT, Swing, JavaFX & SWT 1
S [BorderLayout]WEST/EAST sollen über ganze Höhe gehen; AWT, Swing, JavaFX & SWT 3
A BorderLayout Verhältnis festlegen? AWT, Swing, JavaFX & SWT 5
F Farbe für den Hintergrund eine BorderLayout-Teils AWT, Swing, JavaFX & SWT 5
O Probleme bei BorderLayout AWT, Swing, JavaFX & SWT 5
H Bei BorderLayout SOUTH minimieren AWT, Swing, JavaFX & SWT 3
DeeDee0815 Abstand ZUM BorderLayout AWT, Swing, JavaFX & SWT 13
K BorderLayout--> feste Größe AWT, Swing, JavaFX & SWT 2
D BorderLayout + Buttongröße ändern AWT, Swing, JavaFX & SWT 4
P JPanel im BorderLayout feste Größe/Position zuordnen AWT, Swing, JavaFX & SWT 3
L Alle Inhalte in BorderLayout.CENTER löschen? AWT, Swing, JavaFX & SWT 2
M Layout Problem (GrudBag- + BorderLayout) AWT, Swing, JavaFX & SWT 6
O GridBag IN BorderLayout? AWT, Swing, JavaFX & SWT 5
J BorderLayout / 1 Panel in Mitte und 1 Panel im Osten anordne AWT, Swing, JavaFX & SWT 6
F FlowLayout in BorderLayout AWT, Swing, JavaFX & SWT 4
D BorderLayout mit JTextField AWT, Swing, JavaFX & SWT 7
B BorderLayout.WEST (JTree strecken in Höhe) AWT, Swing, JavaFX & SWT 2
B BorderLayout/JSplitPane Problem beim Ausrichten AWT, Swing, JavaFX & SWT 5
F Anordnung im BorderLayout AWT, Swing, JavaFX & SWT 6
S Toolbar in einem BorderLayout verschieben AWT, Swing, JavaFX & SWT 4
M FlowLayout in BorderLayout einbinden? AWT, Swing, JavaFX & SWT 6
J Ermittlung der Ausrichtung einer Komponente im BorderLayout AWT, Swing, JavaFX & SWT 3
M AWT borderLayout AWT, Swing, JavaFX & SWT 7
R dummes BorderLayout :( AWT, Swing, JavaFX & SWT 8
H BorderLayout.setBackground AWT, Swing, JavaFX & SWT 2
J paint(Graphics g) im BorderLayout einem JPanel zuordnen &amp AWT, Swing, JavaFX & SWT 19
C Borderlayout und Checkboxgruppen AWT, Swing, JavaFX & SWT 3
frau-u Borderlayout - zusätzliche Zeile AWT, Swing, JavaFX & SWT 4
W Probleme mit BorderLayout AWT, Swing, JavaFX & SWT 2
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
J 2D-Grafik Linie wird nach Mausklick nicht am richtigen Ort gezeichnet AWT, Swing, JavaFX & SWT 11
T SWT benötige den richtigen SWT style --> org.eclipse.swt.SWT.* AWT, Swing, JavaFX & SWT 2
C Label wird nicht an der richtigen Position angezeigt.. AWT, Swing, JavaFX & SWT 7
F Swing GUI wird nicht zum richtigen Zeitpunkt neu gezeichnet AWT, Swing, JavaFX & SWT 26
D JTree zur richtigen Zeit aktualisieren. AWT, Swing, JavaFX & SWT 3
S Setzen der richtigen Größe einer JTextPane ohne Rand AWT, Swing, JavaFX & SWT 4
G Wie komme ich an die richtigen daten nach dem sortieren? AWT, Swing, JavaFX & SWT 6
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
S XML Output String Format AWT, Swing, JavaFX & SWT 2
R XY und Z format AWT, Swing, JavaFX & SWT 3
S Abspeichern aus einem ImageIcon ins korrekte Format AWT, Swing, JavaFX & SWT 2
P Bild im TIFF oder BMP Format einlesen AWT, Swing, JavaFX & SWT 3
M Format eines Textfeldes AWT, Swing, JavaFX & SWT 2
H default format settings AWT, Swing, JavaFX & SWT 11
D Font eines JLabels verändern, JLabel mit LookAndFeel-Format AWT, Swing, JavaFX & SWT 2
G Frage zu Format von MaskFormatter AWT, Swing, JavaFX & SWT 3
P Vektor-Grafik im XML-Format speichern AWT, Swing, JavaFX & SWT 39

Ähnliche Java Themen


Oben