Bonjour, 2 méthodes te sont nécessaires :
- Toolkit.getDefaultToolkit().getScreenSize();
- setLocation
La 1ère te renvoi la taille de l'écran, et la 2è permet de placer une JFrame à l'endroit voulu.
Ensuite à toi de calculer comment tu veux les placer exactement.
Perso j'utiliserais plutôt getMaximumWindowBounds() :
Cela te renvoi l'origine de la position en haut à gauche de l'écran (x,y) ainsi que la taille du bureau (width,height), le tout en prenant compte des différentes barres systèmes du bureau, par dessus lesquels les applications ne peut pas s'afficher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Rectangle bounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
Exemple des valeurs retournées chez moi :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ScreenSize : java.awt.Dimension[width=1600,height=1200] WindowBounds : java.awt.Rectangle[x=0,y=0,width=1600,height=1166]
Je ne connaissais pas cette méthode, mais je n'ai jamais eu de problème car en général l'application ne prend pas tout l'écran au démarrage. Cette méthode permet quand même de centrer la fenêtre (avec une petite erreur de quelques pixels visiblement).
Du coup je ne m'en étais pas rendu compte, merci pour l'info .
Non mais c'est super utile lorsqu'on veut placer une fenêtre dans un coin, comme par exemple une popup de notification en bas à droite
Pour centrer la fenêtre on peut utiliser directement setLocationRelativeTo(Component). La fenêtre se positionnera alors au centre du composant passé en paramètre, ou au centre de l'écran si le paramètre est null
a++
Merci pour votre aide!
Merci adiguba. Comme CheryBen je me contentait de Toolkit.getDefaultToolkit().getScreenSize(); car je ne connaissait ni setLocationRelativeTo ni GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()
Pensez à jeter un coup d'oeil aux FAQs Java de temps en temps : on y trouve des perles de ce genre
a++
C'est de la FAQ que j'avais tiré cette méthode, il y a quelques temps, mois, années...
Bonsoir.
Je sais que je réveille un vieux post mais j'ai une question concernant la méthode setLocationRelaviteTo().
Lorsque je l'applique elle centre bien le composant par rapport à l'écran, mais c'est son coin supérieur gauche qui est centré.
Comment centrer le composant par rapport à son centre pas son coin supérieur gauche?
Merci
Et bien tu fais un peu de math,
Tu calcul le point au milieu de ta fenêtre
Et tu fais la différence avec le point ou tu veux placer ta fenêtre
Avec setLocationRelaviteTo() la fenêtre est correctement centrée selon sa taille. Bien sûr pour cela il faut que sa taille soit déjà définie lors de l'appel de la méthode...
a++
nomDeVariableJFrameOuBienDialog.setLocationRelativeTo(null);
//
Partager