it-swarm.com.de

Wie wird JFrame so eingestellt, dass es unabhängig von der Bildschirmauflösung zentriert angezeigt wird?

Bei der Arbeit mit Java fällt es mir schwer, mein Hauptfenster in der Mitte des Bildschirms zu positionieren, wenn ich die Anwendung starte.

Kann ich das auf irgendeine Weise tun? Es muss nicht vertikal zentriert sein, horizontale Ausrichtung ist für mich das wichtigere Ziel. Aber auch eine vertikale Ausrichtung ist erwünscht.

186

Ich habe es immer so gemacht:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

dabei ist this der beteiligte JFrame.

220
Jack

Verwenden Sie setLocationRelativeTo(null)

Diese Methode hat einen besonderen Effekt, wenn Sie ein null übergeben. Laut Javadoc:

Wenn die Komponente null ist oder die dieser Komponente zugeordnete GraphicsConfiguration null ist, wird das Fenster in der Mitte des Bildschirms platziert.

Dies sollte nach dem Festlegen der Größe oder dem Aufrufen von pack() geschehen, aber bevor es sichtbar gemacht wird, wie folgt:

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
501
JRL

Sie können JFrame.setLocationRelativeTo(null) aufrufen, um das Fenster zu zentrieren. Stellen Sie sicher, dass dies vor JFrame.setVisible(true) steht.

53
Greg

Klicken Sie einfach auf das Formular und gehen Sie zu den JFrame-Eigenschaften, dann zur Registerkarte Code und aktivieren Sie Generate Center.

enter image description here

27

So einfach ist das ...

setSize(220, 400);
setLocationRelativeTo(null);  

wenn Sie einen Rahmen verwenden, stellen Sie den Rahmen auf

frame.setSize(220, 400);
frame.setLocationRelativeTo(null);  

Zur Verdeutlichung aus den Dokumenten :

Wenn die Komponente null ist oder die dieser Komponente zugeordnete GraphicsConfiguration null ist, wird das Fenster in der Mitte des Bildschirms platziert.

11
gcclinux

Die eingestellte Größe erhalten Sie, nachdem Sie Folgendes hinzugefügt haben:

frame.setLocationRelativeTo(null);

7
philanderson556

ich verwende NetBeans IDE 7.2.1 als meine Entwicklerumgebung und dort haben Sie die Möglichkeit, die JForm-Eigenschaften zu konfigurieren.

gehen Sie in den JForm-Eigenschaften zur Registerkarte 'Code' und konfigurieren Sie das 'Generate Center'. Sie müssen zunächst die Formulargrößenrichtlinie auf "Größenänderungscode generieren" einstellen.

7
Asaf Magen

Ich verwende NetBeans IDE 7.3 und auf diese Weise kann ich meinen JFrame zentralisieren. Stellen Sie sicher, dass Sie im JFrame-Bedienfeld auf Ihre JFrame-Eigenschaftsleiste klicken, auf die Codeleiste klicken und "Generate Center" auswählen Kontrollkästchen.

6
Gstuntz Wonderz

Wenn Sie NetBeans verwenden, klicken Sie einfach auf den Rahmen in der Entwurfsansicht und dann auf die Registerkarte Code in den Eigenschaften. Aktivieren Sie als Nächstes "Generate Center". Das wird die Arbeit erledigen.

2
Kingsley Ijike

Sie können diese Methode verwenden, mit der der JFrame gleichzeitig zentriert und im Vollbildmodus angezeigt werden kann.

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
1
The Appsolit

Wenn Sie setPreferredSize(new Dimension(X, Y)); explizit verwenden, ist es besser, Folgendes zu verwenden:

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);

1
user7205283

Gehen Sie in der Net Beans-GUI zu jframe und klicken Sie mit der rechten Maustaste auf jFrame in den Navigator-Eigenschaften unter . code, Formatierungsrichtlinie Eigenschaft select Generate Ändern Sie die Größe von Code. Deaktivieren Sie im selben Fenster Position generieren und aktivieren Sie Größe generieren und zentrieren.

Viel Spaß beim Programmieren. Ramana

0
K V Ramana

Für Java Swing:

Gehen Sie zu "Navigator" -> "JFrame" -> "Eigenschaften" -> "Code" -> aktivieren Sie "Generate Center"

0
Carlos Maemo