# Zentrieren mittels setLocationRelativeTo(null);?



## Guest (11. Feb 2009)

Hallo,

ich möchte einen JFrame zentrieren. Im Konstruktor des JFrames wo ich die Größe setze, schreibe ich

```
this.setLocationRelativeTo(null);
```

Das Fenster ist aber nicht zentriert wie gewünscht.


----------



## Roar (11. Feb 2009)

die musst erst die größe setzen, danach obige methode aufrufen.


----------



## Ariol (11. Feb 2009)

Machst du das nach pack() und setVisible?
Falls ja schreibs mal davor.



			
				Gast hat gesagt.:
			
		

> Das Fenster ist aber nicht zentriert wie gewünscht.


Wie ist es denn gewünscht?


----------



## Zed (11. Feb 2009)

Zwar etwas händisch aber funktioniert.


```
int width = frame.getWidth();
		int height = frame.getHeight();
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		int x = (screen.width - width) / 2;
		int y = (screen.height - height) / 2;
		frame.setBounds(x, y, width, height);
		frame.setVisible(true);
```


----------



## Gast (11. Feb 2009)

@Ariol
Hi,

ich maches es vor setVisisble(true). Pack nutze ich überhaupt nicht. Ist das nötig?


----------



## Gast (11. Feb 2009)

Auch nach setVisible(true) bringt mir setLocationRelativeTo(null) keine Zentrierung des JFrames... Wieso geht das nicht?


----------



## Niki (11. Feb 2009)

```
pack();
setLocationRelativeTo(null);
setVisible(true);
```
Mit dieser Reihenfolge klappts. pack() passt deine Komponenten an die preferred-Size an. Du kannst statt pack() auch setSize(300,300) aufrufen. Dann ist dein Fenster 300 Pixel weit und hoch


----------



## Gast (11. Feb 2009)

Hmm,

wenn ich

vorher code
this.setSize(300, 300);
nachher code
setLocationRelativeTo(null);
setVisible(true);

ausführe, klappt es aber nicht :-(

Zwischendrin füge ich noch MenuBar usw. dem Fenster hinzu


----------



## Gast (11. Feb 2009)

Nachtrag:

auch wenn ich pack vor setLocation setze, klappt es nicht.


----------



## thE_29 (11. Feb 2009)

Poste mal den Code!
Normalerweise klappt das immer.


----------



## Gast (11. Feb 2009)

Hi,

nun hab ich gerade unter http://stackoverflow.com/questions/144892/how-to-centre-a-window-in-java gelesen, dass bei Nutzung mehrerer Monitore diese Lösung mit setLocationRelativeTo(null) nicht funktioniert.

Ich nutze auch 2 Monitore... Leider steht dort nicht so richtig, wie man das in solch einem Fall lösen könnte


----------



## thE_29 (12. Feb 2009)

Bei mir geht das ohne Probleme!

Habe 2 Monitore...


```
this.setSize(300,300);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
```

Geht Tip Top!


----------



## Ebenius (12. Feb 2009)

Gast, auf was für einem System läuft das denn bei Dir (nicht)? Und mit welchem JRE?


----------



## Gast (12. Feb 2009)

Windows XP, JRE 1.6.0

Versuch mal folgendes Szenario: "Spiegele" den Monitorinhalt. D.h. Monitor 2 zeigt das gleiche an wie Monitor 1. Dann müsste es auch bei dir nicht gehen...


----------



## thE_29 (12. Feb 2009)

Oho!
Also spiegeln..

Najo, in der Arbeit brauche ich das nicht, weil ich nicht 2mal das gleiche sehen will..
Desweiteren spiegle ich sowieso fast nie, weil die 2 Bildquellen immer andere Auflösungen vertragen!


----------

