Vertikale Mitte

Status
Nicht offen für weitere Antworten.

Barthsimpson

Mitglied
Hallo erstmal,

ich beschäftige mich jetzt schon seit zwei Tagen mit einem (wahrscheinlich sehr primitiven) Problem:

Ich habe eine Gui mit Panels (verschachtelte BorderLayouts) für ein Spiel namens Reversi (wie Schachbrett 8x8)
geschaffen und will jetzt auf der rechten Seite von diesem Spielfeld (rechtes Panel) eine Statistik (drei Labels) einfügen, welcher Spieler wieviele Steine hat! Sonst soll aber NICHTS auf dieser Seite angezeigt werden.

Das klappt eigentlich auch wunderbar, mein Problem ist nur, dass ich das in die vertikale Mitte des rechten Panels bringen will!

Gibt es einen LayoutManager, bei dem man etwas einfach in die vertikale Mitte setzen kann? Dann könnte ich die drei Statistik-Labels wieder in ein Panel packen und das dann mithilfe so eines LayoutManagers einfach zentrieren...

Ich hoffe ihr wisst was ich mein :lol:
 
Ich weiß jetzt nicht genau ob es funktioniert, aber sollte BorderLayout.CENTER das nicht eigentlich so machen?

Da BorderLayout alle Elemente gleich groß macht, kannst du ja NORTH und SOUTH zur Not noch ein leeres JLabel oder sowas einfügen
 
HG hat gesagt.:
Ich weiß jetzt nicht genau ob es funktioniert, aber sollte BorderLayout.CENTER das nicht eigentlich so machen?

Da BorderLayout alle Elemente gleich groß macht, kannst du ja NORTH und SOUTH zur Not noch ein leeres JLabel oder sowas einfügen

Du meinst in etwa so?
Code:
		/**
		 * Hier wird die rechte Seite vom Spielbrett zusammengestellt
		 */
		rechts.setLayout(new BorderLayout());
		
		rechts.add(statistikLabel, BorderLayout.NORTH); //Anzeige 'Statistik'
		rechts.add(anzahlRotLabel, BorderLayout.CENTER); //Anzeige 'Anzahl rot...'
		rechts.add(anzahlSchwarzLabel, BorderLayout.SOUTH); //Anzeige 'Anzahl schwarz...'
		
		rechtsgesamt.setLayout(new BorderLayout());
		rechtsgesamt.add(rechtsgesamtleer1, BorderLayout.NORTH); //leeres Panel
		rechtsgesamt.add(rechts, BorderLayout.CENTER); 
		rechtsgesamt.add(rechtsgesamtleer2, BorderLayout.SOUTH); //leeres Panel

Nein, das funktioniert nicht, das sieht dann nämlich so aus:
unbenanntqw6.jpg


EDIT: Mit leeren JLabels, statt leeren Panels kommt das gleiche raus!

->BorderLayout macht eben nicht alle Elemente gleich groß, sonder das "bläst" den Center eben auf, wenn die Komponenten außenrum weniger/gar keinen Platz brauchen und genau das passiert jetzt auch hier...
 
Also ich hab jetzt eine Lösung gefunden, ist zwar ganz sicher nicht die schönste, aber sie funktioniert, vielleicht kann mir ja jemand eine schönere Lösung nennen :wink:

Code:
      /**
		 * Hier wird die rechte Seite vom Spielbrett zusammengestellt
		 */
		rechts.setLayout(new GridLayout(16, 1));
		
		for(int i=0 ; i<7 ; i++){
			Panel leer=new Panel();
			rechts.add(leer);
		}
		
		rechts.add(statistikLabel); //Anzeige 'Statistik'
		rechts.add(anzahlRotLabel); //Anzeige 'Anzahl rot...'
		rechts.add(anzahlSchwarzLabel); //Anzeige 'Anzahl schwarz...'
 
wenn ich dich richtig verstehe, würde vllt. schon etwas HTML in den Labels reichen:
Code:
einLabel.setText("<html><body><table><tr><td>Blabla, zeile1</td></tr><tr><td>Blabla, zeile2</td></tr><tr><td>Blabla, zeile3</td></tr></table></body></html>");
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben