Quelle est la façon la plus simple de centrer un java.awt.Window
, comme un JFrame
ou un JDialog
?
java
swing
user-interface
awt
Andrew Swan
la source
la source
setLocation()
,setLocationRelativeTo()
etsetLocationByPlatform()
ou tout AWT, pas Swing. ;)Réponses:
À partir de ce lien
la source
pack()
amené à le définir avant et il a mis le coin supérieur du cadre au centre de mon écran. Après avoir déplacé la ligne en dessous,pack()
elle a été correctement centrée.Cela devrait fonctionner dans toutes les versions de Java
la source
setLocationRelativeTo(null)
doit être appelé après avoir utilisésetSize(x,y)
ou utilisépack()
.la source
Notez que les techniques setLocationRelativeTo (null) et Tookit.getDefaultToolkit (). GetScreenSize () ne fonctionnent que pour le moniteur principal. Si vous êtes dans un environnement à plusieurs moniteurs, vous devrez peut-être obtenir des informations sur le moniteur spécifique sur lequel se trouve la fenêtre avant de faire ce type de calcul.
Parfois important, parfois pas ...
Voir les javadocs GraphicsEnvironment pour plus d'informations sur la façon d'obtenir cela.
la source
Sous Linux, le code
Mettez ma fenêtre à un emplacement aléatoire à chaque fois que je l'ai lancée, dans un environnement multi-affichage. Et le code
"couper" la fenêtre en deux en la plaçant au centre exact, qui est entre mes deux écrans. J'ai utilisé la méthode suivante pour le centrer:
Fait apparaître la fenêtre juste au centre du premier affichage. Ce n'est probablement pas la solution la plus simple.
Fonctionne correctement sur Linux, Windows et Mac.
la source
J'ai finalement fait fonctionner ce tas de codes dans NetBeans en utilisant Swing GUI Forms afin de centrer le jFrame principal:
OU
OU
la source
Ce qui suit ne fonctionne pas pour JDK 1.7.0.07:
Il place le coin supérieur gauche au centre - pas la même chose que le centrage de la fenêtre. L'autre ne fonctionne pas non plus, impliquant frame.getSize () et dimension.getSize ():
La méthode getSize () est héritée de la classe Component, et par conséquent frame.getSize renvoie également la taille de la fenêtre. Ainsi, en soustrayant la moitié des dimensions verticales et horizontales des dimensions verticales et horizontales, pour trouver les coordonnées x, y de l'endroit où placer le coin supérieur gauche, vous donne l'emplacement du point central, qui finit par centrer la fenêtre également. Cependant, la première ligne du code ci-dessus est utile, "Dimension ...". Faites ceci pour le centrer:
Le JLabel définit la taille de l'écran. Il est dans FrameDemo.java disponible sur les tutoriels java sur le site Oracle / Sun. Je l'ai mis à la moitié de la hauteur / largeur de la taille de l'écran. Ensuite, je l'ai centré en plaçant le coin supérieur gauche à 1/4 de la dimension de la taille de l'écran à partir de la gauche et à 1/4 de la dimension de la taille de l'écran à partir du haut. Vous pouvez utiliser un concept similaire.
la source
ci-dessous est le code pour afficher un cadre en haut au centre de la fenêtre existante.
}
} public static void main (String [] args) lève l'exception {
}
Vous trouverez ci-dessous la sortie de l'extrait de code ci-dessus:
la source
frame.setLocation(x, 0);
semble être faux - ne devrait-il pas être à laframe.setLocation(x, y);
place?int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
Existe-t-il donc dans le code uniquement pour montrer que vous pouvez également centrer en axe vertical? Ok, je pensais que tu avais juste oublié de l'utiliser, désolé pour les ennuis.Il y a quelque chose de vraiment simple que vous pourriez oublier après avoir essayé de centrer la fenêtre en utilisant soit
setLocationRelativeTo(null)
ousetLocation(x,y)
et cela finit par être un peu décentré.Assurez-vous d'utiliser l'une de ces méthodes après l' appel,
pack()
car vous finirez par utiliser les dimensions de la fenêtre elle-même pour calculer où la placer à l'écran. Jusqu'à ce quepack()
soit appelé, les dimensions ne sont pas ce que vous penseriez, jetant ainsi les calculs pour centrer la fenêtre. J'espère que cela t'aides.la source
Exemple: À l'intérieur de myWindow () sur la ligne 3 se trouve le code dont vous avez besoin pour définir la fenêtre au centre de l'écran.
la source
frame.setLocationRelativeTo (null);
Exemple complet:
la source
Le code suivant centre le
Window
au centre du moniteur actuel (c'est-à-dire là où se trouve le pointeur de la souris).la source
Vous pouvez également essayer ceci.
la source
En fait, cadre
.getHeight()
et negetwidth()
renvoie pas de valeurs, vérifiez-le enSystem.out.println(frame.getHeight());
mettant directement les valeurs de largeur et de hauteur, puis cela fonctionnera bien au centre. par exemple: comme ci-dessousles deux 450 est ma largeur de cadre n hauteur
la source
la source
L'ordre des appels est important:
premier -
seconde -
la source