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:
 

HG

Mitglied
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
 

Barthsimpson

Mitglied
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...
 

Barthsimpson

Mitglied
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...'
 

dieta

Top Contributor
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.

Ähnliche Java Themen

Neue Themen


Oben