Ich entwickle eine Java Swing-Anwendung. Wie kann ich es so machen, dass wenn das Programm selbst und andere geöffnete Fenster in der Mitte des Bildschirms erscheinen?Center Swing Windows
Antwort
frame.setLocationRelativeTo(null);
Sie müssen es von Hand tun, mit setLocation(x,y)
.
Etwas wie:
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((dim.width-frameWidth)/2, (dim.height-frameHeight)/2);
sollte es tun (nicht getestet).
es von Hand in Multi-Screen-Umgebung tun so etwas wie dieses gibt (statisch ‚, weil Sie es wahrscheinlich in einer Utility-Klasse wollen würde):
public static Rectangle getScreenBounds(Component top){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gd = ge.getScreenDevices();
if (top != null){
Rectangle bounds = top.getBounds();
int centerX = (int) bounds.getCenterX();
int centerY = (int) bounds.getCenterY();
for (GraphicsDevice device : gd){
GraphicsConfiguration gc = device.getDefaultConfiguration();
Rectangle r = gc.getBounds();
if (r.contains(centerX, centerY)){
return r;
}
}
}
return gd[0].getDefaultConfiguration().getBounds();
}
public void centerWindowOnScreen(Window windowToCenter){
Rectangle bounds = getScreenBounds(windowToCenter);
Point newPt = new Point(bounds.x + bounds.width/2, bounds.y + bounds.height/2);
Dimension componentSize = windowToCenter.getSize();
newPt.x -= componentSize.width/2;
newPt.y -= componentSize.height/2;
windowToCenter.setLocation(newPt);
}
Wie für Standard-Schaltfläche, dann ist es JDialog.getRootPane().setDefaultButton(btn)
, aber Taste muss dem Dialog bereits hinzugefügt und sichtbar sein.
Ich arbeite hier mit zwei Displays. Einer ist sogar vertikal verschoben. Camickr/Rehans antwortet funktioniert für mich. Es zentriert das Fenster auf dem ersten Bildschirm. Ist es nicht das, was deine Methode zu erreichen versucht? Oder verpasse ich hier etwas? Vielen Dank! – Riscie
@Riscie nicht wirklich. Meine Methode versucht herauszufinden, auf welchem Bildschirm Ihre Komponente angezeigt wird, sodass Sie sie auf diesem Bildschirm zentrieren können, nicht nur auf der ersten. – Taisin
danke für die Klärung! Nun, das ist ziemlich wichtig! Schade, dass dies nicht standardmäßig angeboten wird! – Riscie
frame.setLocationRelativeTo (null); machen den Rahmen offen in Cetner
Grüße, Rehan Farooq
hat für mich gearbeitet! Vielen Dank! – StiGMaT
Es ist einfach, wenn Sie Netbeans verwenden. Im Eigenschaftenfenster von JFrame gehen Sie zu "Code" Registerkarte. Es gibt eine Option als "Generiere Mitte" .Überprüfen Sie diese Option. JFrame wird in der Mitte angezeigt.
- 1. Transparent Swing Windows
- 2. Java Swing "Kinder" Windows
- 3. Java Swing Run-Programm beim Windows-Start
- 4. Center JDialog über Eltern
- 5. Java-Swing-Rendering-Bug auf Windows 7 Look-and-Feel?
- 6. Ein Windows Media Center Plugin mit C++ schreiben
- 7. Windows Dev Center | App-Paket bei 99,99% stecken
- 8. Wie kann ich in die Windows Action Center-Wartung integrieren?
- 9. Jeder Quellcode einer iPhone-Fernbedienung für das Windows Media Center?
- 10. Winkelmaterial Layout-Align = "Center-Center" funktioniert nicht
- 11. Swing von Swing-API Authorization
- 12. Wie erhalten Sie Windows-Anmeldedaten von einer Swing-Anwendung?
- 13. Drucken von Swing auf Mac & Windows - Wo wird Postscript unterstützt?
- 14. Swing-Popup befindet sich unten rechts auf dem Windows-Bildschirm
- 15. Java Swing rechten Rahmen funktioniert nicht auf Microsoft Windows
- 16. (DPI) Skalierung von Schriftarten in Java Swing (und Windows)
- 17. Ausführung von Java-Swing-Anwendung auf Windows 8 Tablet
- 18. Ziehen und Ablegen von Java Swing-Anwendung zu Windows Explorer
- 19. Wie kann ich die Windows-Taskleiste mit Swing?
- 20. Java-Platz andere Windows-App unterhalb meiner Swing-Anwendung
- 21. CSS Animation Swing-Effekt
- 22. Swing On-Screen Tastatur
- 23. Mit Swing & Java, was durch die "Swing-Shell" Thread
- 24. ViewportControl Pinch Zoom Center
- 25. Beschädigtes Java-Swing-Fenster
- 26. Android in Swing emulieren
- 27. Microbreaks - Java Swing-Tool
- 28. Swing auf Ubuntu Schrifthöhe
- 29. Flexbox - justify-content: center und align-items: center funktioniert nicht?
- 30. Dateiauswahl (Swing)
Funktioniert das auch auf älteren Java-Versionen? Ich bin überrascht, weil ich vor einiger Zeit herausgefunden habe, dass die einzige Möglichkeit, das zu tun, "von Hand" war, wie hier erklärt: http://www.java2s.com/Code/Java/Swing-JFC/Howtocenteraframeordialog.htm –
ist gültig ab 1.4, aber Sie müssen sicherstellen, dass Sie den Bildschirm zuerst richtig verpacken oder anderweitig auf die richtige Größe einstellen. – Yishai
Nicht wirklich offensichtlich, wenn Sie es nicht wissen, aber das Verhalten von [setLocationRelativeTo()] (http://tinyurl.com/34syhcj), mit einer Null, ist in der Tat das Fenster zu zentrieren, wie im Javadoc beschrieben. – Gnoupi