BorderLayout

RMeier

Mitglied
Hallo Leute,

ich brauche Hilfe beim BorderLayout.

Ich möchte 4 Objekte abgeleitet von JPanel um ein ein fünftes JPanel legen.

Irgendwie werden die Außenränder nicht so groß gezeichnet,
als sie wären. Da brauche ich eure Hilfe, weil ich den Fehler nicht finde.
Dann möchte ich die Länge des Außenrandes in East und West gleich groß
erhalten (133 * 100 px). Ich bin daran kläglich gescheitert.

Das Trisento Spiel JPanel poste ich hier nicht.

Dafür den Code für die 4 Jpanels und der entsprechende Frame mit BorderLayout:

Seitenraender.java
Code:
package trisento_grid;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JPanel;

public class Seitenraender extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
//	private static final int randzeile = 8;
//	private static final int randspalten = 6;
	Feld[][] spielfeldrand;
	int randseite;

	// 1 oberer und unterer Spielfeld-Rand, 2 für linker und rechter Rand
	public Seitenraender(int spielfeldRand) {
		if (spielfeldRand == 1) {
			randseite = 1;
			erzeugeRand();
		} else if (spielfeldRand == 2) {
			randseite = 2;
		}

	}

	private void erzeugeRand() {
		if (randseite == 1) {
			spielfeldrand = new Feld[1][8];
			for (int i = 0; i < 1; i++) {
				for (int j = 0; j < 8; j++) {
					spielfeldrand[i][j] = new Feld(j * 133, 0, 133, 100);
					spielfeldrand[i][j].setFarbe(Color.LIGHT_GRAY);
				}
			}
		}
		else if(randseite == 2) {
/*			spielfeldrand = new Feld[6][1];
			for (int i = 0; i < 6; i++) {
				for (int j = 0; j < 1; j++) {
					spielfeldrand[i][j] = new Feld(0, i * 100, 133, 100);
					spielfeldrand[i][j].setFarbe(Color.LIGHT_GRAY);
				}
			}*/
		}
	}

	public void paintComponent(Graphics rand) {
		super.paintComponent(rand);
		zeichneRand(rand);
	}

	private void zeichneRand(Graphics rand) {
		if (randseite == 1) {
			//Rand oben und unten
			for (int i = 0; i < 1; i++) {
				for (int j = 0; j < 8; j++) {
					
					//Beschriftung mit Buchstaben
					if (j > 0 && j < 7) {
						//arbeitet mit zahhlen und parst diese in chars zu String
						rand.setColor(spielfeldrand[i][j].getFarbe());
						rand.fillRect(spielfeldrand[i][j].x,
								spielfeldrand[i][j].y,
								spielfeldrand[i][j].width,
								spielfeldrand[i][j].height);
						
						//Buchstabe generieren und schreiben
						char buchstabe = (char)(64 + j);
						rand.setColor(Color.black);
						rand.setFont(new Font("Calibri", Font.BOLD, 14));
						rand.drawString(String.valueOf(buchstabe), spielfeldrand[i][j].x + 66, spielfeldrand[i][j].y + 50);
					} else {
						rand.setColor(spielfeldrand[i][j].getFarbe());
						rand.fillRect(spielfeldrand[i][j].x,
								spielfeldrand[i][j].y,
								spielfeldrand[i][j].width,
								spielfeldrand[i][j].height);
					}
					
					//Gitter rübersetzen
					rand.setColor(Color.white);
					rand.drawRect(spielfeldrand[i][j].x,
							spielfeldrand[i][j].y,
							spielfeldrand[i][j].width,
							spielfeldrand[i][j].height);
				}
			}
		}
		else if (randseite == 2)
		{
			for(int i = 0; i < 6; i++) {
				rand.setColor(Color.LIGHT_GRAY);
				rand.fillRect(0, i * 100, 133, 100);
				
				rand.setColor(Color.WHITE);
				rand.drawRect(0, i * 100, 133, 100);
				
				//Text
				rand.setColor(Color.black);
				rand.setFont(new Font("Calibri", Font.BOLD, 14));
				rand.drawString(String.valueOf(i + 1), 63, (i * 100) + 50);
			}
		}
	}
	
/*	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame fenster = new JFrame("Trisentoseite");
//		fenster.setTitle("Trisento");
		fenster.setSize(871, 629);
		fenster.setLocation(100, 100);
		fenster.setResizable(false);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenster.getContentPane().add(new Seitenraender(2));
//		fenster.pack();
		fenster.setVisible(true);
	} */
}

TrisentoBorderLayout.java
Code:
package trisento_grid;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.JFrame;

public class TrisentoBorderLayout extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2203104514633638245L;
	final private Spielfelder trisento = new Spielfelder();
	final private Seitenraender randoben = new Seitenraender(1);
	final private Seitenraender randunten = new Seitenraender(1);
	final private Seitenraender randlinks = new Seitenraender(2);
	final private Seitenraender randrechts = new Seitenraender(2);
	//muss immer etwas mit BorderLayout heißen
	final private String[] rahmen = {BorderLayout.EAST, BorderLayout.NORTH, BorderLayout.WEST, BorderLayout.SOUTH, BorderLayout.CENTER};
	/**
	 * @param args
	 */
	public TrisentoBorderLayout() {
		Container layout = getContentPane();
		//Layout laden in Container
//		layout.setSize(new Dimension(1100, 1100));
		layout.setLayout(new BorderLayout());
//		layout.setMaximumSize(new Dimension(807, 629));
		layout.add(randoben, rahmen[1]);
		layout.add(trisento, rahmen[4]);
		layout.add(randunten, rahmen[3]);
		layout.add(randlinks, rahmen[0]);
		layout.add(randrechts, rahmen[2]);
	}
		
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame fenster = new TrisentoBorderLayout();
		fenster.setTitle("Trisento");
		fenster.setSize(834, 650);
//		fenster.setSize(807, 629);
		fenster.setLocation(0, 0);
		fenster.setResizable(true);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//		fenster.getContentPane().add(new Spielfelder());
//		fenster.pack();
		fenster.setVisible(true);
	}
}

Wie kann man es besser machen?

Beste Grüße
 

bERt0r

Top Contributor
Damit das BorderLayout den Komponenten die richtige größe gibt, musst du die preferredSize der Komponenten durch setPreferredSize(Dimension d) setzen. setSize ist dem BorderLayout ganz egal :)
 

RMeier

Mitglied
Danke, das Fenster ist groß genug jetzt, aber die JPanels werden nicht so groß, als sie könnten.

Wie kann man denn jetzt die Rahmen-Inhalt größer setzen?
 

bERt0r

Top Contributor
Nur das Center wird so groß wie möglich gemacht, alle anderen Positionen bekommen nur bis zur PreferredSize (höhe für north und south, breite für east und west) platz.
 
Ä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
C LayoutManager BorderLayout im richtigen Format beschriften AWT, Swing, JavaFX & SWT 10
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

Ähnliche Java Themen


Oben