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

Lesezeit: 3 Minuten

Benutzer-Avatar
AmateurProgrammierer

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

Kann ich das irgendwie machen? Es muss nicht vertikal zentriert sein, die horizontale Ausrichtung ist für mich das wichtigere Ziel. Aber auch eine vertikale Ausrichtung ist willkommen.

Benutzer-Avatar
JRL

Verwenden setLocationRelativeTo(null)

Diese Methode hat einen besonderen Effekt, wenn Sie sie passieren a null. 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 Einstellen der Größe oder dem Aufrufen erfolgen pack()aber bevor Sie es sichtbar machen, wie folgt:

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

  • +1 wenn die Methode pack() verwendet wird, setLocationRelativeTo sollte nach dem Aufruf der Methode pack() verwendet werden

    – Ravindra Gullapalli

    9. August 2012 um 13:26 Uhr

  • @Imray, weil es wahrscheinlich nicht mit einer Konfiguration mit zwei Monitoren funktioniert. 😛

    – Ankit

    1. März 2013 um 21:37 Uhr

  • Es sieht so aus, als ob diese Methode danach aufgerufen werden sollte .setSize().

    – Kamil

    30. Juni 2013 um 1:22 Uhr

  • Dies funktioniert in einem Multi-Monitor-Setup und muss, wie in den Kommentaren angegeben, nach pack() und setSize() aufgerufen werden, wenn sie überhaupt aufgerufen werden.

    – Paul Gregor

    12. Februar 2014 um 1:12 Uhr

  • @Ankit es funktioniert perfekt mit meinem Dual-Monitor-Setup. Die “beste” Antwort wird immer vom OP ausgewählt.

    – Kent

    12. Mai 2014 um 20:02 Uhr

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);

wo this ist der beteiligte JFrame.

  • Ich weiß, dass diese Antwort wirklich alt ist, aber gibt es eine Möglichkeit, dies in einem statischen Kontext zu tun? Ich entscheide mich, ob ich darauf hinarbeiten oder einfach die öffentliche statische void main(String[] args), die ich aus welchen Gründen auch immer verwenden wollte.

    – 2xedo

    12. Mai 2015 um 0:59 Uhr

  • Dies funktioniert in einem Einzelmonitor-Setup, aber bei zwei Monitoren kann es so aussehen, als würde es die beiden überspannen (vorausgesetzt, sie haben die gleiche Auflösung). Verwenden setLocationRelativeTo(null) zentriert es auf dem primären Monitor, selbst in einer Konfiguration mit mehreren Monitoren.

    – Rangi Keen

    9. Juni 2015 um 15:34 Uhr


  • Denken Sie daran, dass Sie den JFrame sichtbar machen müssen, BEVOR Sie ihn zentrieren.

    – Jäger S

    25. Juli 2015 um 21:08 Uhr

  • @HunterS: Das ist falsch. Tatsächlich wird empfohlen, es erst sichtbar zu machen, nachdem Sie es zentriert haben. Auf diese Weise wird es nicht erscheinen und dann herumspringen. Solange Sie den Rahmen verpackt oder die Abmessungen vor dem Code in dieser Antwort festgelegt haben, ist alles in Ordnung.

    – Eric Robertson

    9. Oktober 2015 um 14:51 Uhr

Benutzer-Avatar
Greg

Du kannst anrufen JFrame.setLocationRelativeTo(null) um das Fenster zu zentrieren. Stellen Sie dies unbedingt vor JFrame.setVisible(true)

  • +1 wenn die Methode pack() verwendet wird, setLocationRelativeTo sollte nach dem Aufruf der Methode pack() verwendet werden

    – Ravindra Gullapalli

    9. August 2012 um 13:27 Uhr

Benutzer-Avatar
علاء علام

Klicken Sie einfach auf das Formular und gehen Sie zu JFrame-Eigenschaften, dann auf die Registerkarte Code und überprüfen Sie Generate Center.

Geben Sie hier die Bildbeschreibung ein

So einfach ist das…

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

oder wenn Sie einen Rahmen verwenden, stellen Sie den Rahmen auf ein

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

Zur Klarstellung, 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.

Benutzer-Avatar
Asaf Magen

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 auf die Registerkarte “Code” und konfigurieren Sie das “Generate Center”. Sie müssen zuerst die Formulargrößenrichtlinie auf „Größenänderungscode generieren“ einstellen.

Benutzer-Avatar
Gstunt

Ich verwende NetBeans IDE 7.3 und so gehe ich vor, um meinen JFrame zu zentralisieren. Stellen Sie sicher, dass Sie auf das JFrame-Bedienfeld klicken und zu Ihrer JFrame-Eigenschaftsleiste gehen, auf die Codeleiste klicken und das Kontrollkästchen Zentrum generieren auswählen.

1355950cookie-checkWie kann JFrame so eingestellt werden, dass es unabhängig von der Monitorauflösung zentriert angezeigt wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy