Kann jemand einfachen Java Swing-Code/Web-Ressource anzeigen, der den Popup-Dialog zentriert über einem vorhandenen JFrame-Fenster positioniert, wenn der JFrame-Button geklickt hat?Java Swing: Positionierungsdialog über vorhandenem Fenster
Antwort
Oh..it ist ziemlich einfach:
Sagen Sie bitte eine JFrame haben, die eine JDialog enthält, und Sie wollen, dass die JDialog (wenn geöffnet) rechts oben auf JFrame sein.
So in JDialog Konstruktor, sollten Sie so etwas wie haben:
public class MyDialog extends JDialog
public MyDialog(JFrame parent)
{
super.setLocationRelativeTo(parent); // this will do the job
}
Mit anderen Worten, JFrame Zeiger auf Ihren Dialog übergeben, und rufen setLocationRelativeTo (...); Methode.
Über welche Art von Popup-Dialog sprechen Sie? Wenn Sie ein JOptionPane oder etwas Ähnliches verwenden, legen Sie seine übergeordnete Komponente auf den JFrame fest und es wird automatisch über dem JFrame-Fenster zentriert.
JOptionPane.showMessageDialog(frame, "Hello, World!");
Wenn Sie eine eigene JDialog erstellen, können Sie die Position des JFrame erhalten JFrame.getLocation mit() und seine Größe mit JFrame.getSize(). Die Mathematik ist ziemlich einfach von dort; berechne einfach die Mitte des JFrame und subtrahiere die Hälfte der Breite/Höhe des JDialogs, um die obere linke Ecke deines Dialogs zu erhalten.
Wenn Ihr JDialog noch nicht gerendert wurde, gibt JFrame.getSize() möglicherweise eine Nullgröße. In diesem Fall können Sie JDialog.getPreferredSize() verwenden, um herauszufinden, wie groß es sein wird, wenn es einmal auf dem Bildschirm gerendert wurde.
Wenn Sie eine modale wollen und zentriert Dialog auf einem Fenster ...
im Konstruktor des Dialog:
class CustomDialog extends JDialog {
public CustomDialog(Frame owner, String title, boolean modal) {
super(owner, title, modal);
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
...
setSize(150, 100);
setLocationRelativeTo(owner);
}
}
So zeigen Sie den Dialog an (mit einer Schaltfläche usw.):
public void actionPerformed(ActionEvent e) {
dialog.setVisible(true);
}
- 1. Beschädigtes Java-Swing-Fenster
- 2. Popup-Fenster in Java Swing
- 3. Java (Swing) - Ziehen Sie zwei Fenster gleichzeitig
- 4. Kachelartige Fenster auf Swing
- 5. Java Swing 2D Animation
- 6. Java Swing schließt ein Fenster mit setDefaultCloseOperation Vs. addWindowListener
- 7. Java Swing "Kinder" Windows
- 8. Java Swing Fenster schließen, ohne App zu beenden
- 9. Java Swing-Anwendung unter Gnome - Adwaita (dunkle Haut) Fenster Titelleiste
- 10. Java-Zip-Archive aus vorhandenem OutputStream erstellen
- 11. Kann Google Guice auf vorhandenem Java Swing-Code von ca. 15k verwendet werden?
- 12. Anwendungsbreite Tastaturkürzel - Java Swing
- 13. Java Swing ActionMap Tasten
- 14. NetBeans (Java Swing): Fenstergröße einstellen
- 15. Java Swing Timer Probleme
- 16. Java, Swing, Gridlayout Problem
- 17. Java Swing Threading
- 18. Rounded Swing JButton mit Java
- 19. Gemischte Ausrichtung mit Java Swing GroupLayout
- 20. Java Swing Tastenbelegung
- 21. Java Swing JTree Expansion
- 22. Microbreaks - Java Swing-Tool
- 23. java Swing Taste Aktion
- 24. java swing - malen jcomponent
- 25. Positionierung in Java Swing
- 26. Java Swing Animation
- 27. Java Swing validieren Textfeld
- 28. MVC Java Swing qestion
- 29. Java Swing JMenu Mnemonic
- 30. Java Swing Hintergrundbild
Ich wusste nicht, dass diese Methode existiert; ziemlich praktisch! – rob
Wow, das hat mir wirklich geholfen! Kleines Detail aber ... es sollte nur nach der Einstellung der Dialoggröße aufgerufen werden, oder der Dialog erscheint mit der oberen linken Ecke zentriert auf dem Elternfenster. – Nyerguds