Wie kann JFrame so eingestellt werden, dass es unabhängig von der Monitorauflösung zentriert angezeigt wird?
Lesezeit: 3 Minuten
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.
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:
+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
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
علاء علام
Klicken Sie einfach auf das Formular und gehen Sie zu JFrame-Eigenschaften, dann auf die Registerkarte Code und überprüfen Sie Generate Center.
So einfach ist das…
setSize(220, 400);
setLocationRelativeTo(null);
oder wenn Sie einen Rahmen verwenden, stellen Sie den Rahmen auf ein
Wenn die Komponente null ist oder die dieser Komponente zugeordnete GraphicsConfiguration null ist, wird das Fenster in der Mitte des Bildschirms platziert.
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.
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.
13559500cookie-checkWie kann JFrame so eingestellt werden, dass es unabhängig von der Monitorauflösung zentriert angezeigt wird?yes