Le JDK 1.4 offre une méthode de centrage automatique des fenêtres, plus besoin de faire cela à la main... La méthode <javaMethode methode="setLocationRelativeTo(java.awt.Component)" class="java.awt.Window" /> de la classe <javaClass class="java.awt.Window" /> permets de faire un centrage par rapport à un composant ou à l'écran.
Le centrage doit être effectué par rapport à un composant affiché au moment où l'on veut centrer notre fenêtre... Généralement juste avant de la rendre visible. (si le paramètre est null ou que le composant n'est pas affiché, le centrage est fait par rapport à l'écran.)
<comment>Centrage de la fenêtre par rapport à la fenêtre parente.S'il n'y a pas de fenêtre parente, on centre par rapport à l'écran</comment>maFenetre.setLocationRelativeTo(maFenetre.getParent());<comment>...puis on l'affiche</comment>maFrame.show();
JDK 1.3 et antérieurs :
Aucune méthode ne fait cela automatiquement, mais il est très facile de positionner soit-même la fenêtre lors de l'initialisation.
<comment>Lecture de la taille de l'écran</comment>java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();frame.pack();<comment>la fenêtre prend sa taille...</comment>frame.setLocation(<br_l/>(screenSize.width-frame.getWidth())/2,<br_l/>(screenSize.height-frame.getHeight())/2<br_l/>);
Réponse toute simple, en utlisant le LayoutManager approprié à ce cas de figure, à savoir <javaClass class="java.awt.BorderLayout" />.
JPanel panel = new JPanel (new BorderLayout ()); panel.add (monComposant, BorderLayout.CENTER); <comment>le deuxième paramètre de la méthode add n'est pas obligatoire, car il s'agit de la valeur par défaut</comment>
N'oubliez pas que la caractéristique principale du BorderLayout est d'ajuster la dimension du composant à la place disponible.
Centré sur son conteneur (JPanel )
Là aussi c'est le choix du LayoutManager qui résout le problème, mais il est nécessaire d'en prendre un quelque peu plus compliqué : <javaClass class="java.awt.GridBagLayout" />.
JPanel p = new JPanel (new GridBagLayout ()); p.add (composant, new GridBagConstraints (0, 0, 1, 1, 0, 0, GridBagConstraints.CENTER , GridBagConstraints.CENTER, new Insets (0,0,0,0), 0, 0));
Le passage en plein écran est très utile pour la programmation de jeu, mais aussi dans les applications à titre ponctuel pour faire une prévisualisation d'impression, d'image, pour faire un diaporama ou autres ...
Passage en plein écran :
Le passage de l'affichage en plein écran est une nouvelle fonctionnalité de j2se 1.4. La classe <javaClass class="java.awt.GraphicsEnvironment"/> permet de connaître la liste des écrans. Il est fortement recommandée de vérifier que le plein écran est supporté ; si ce n'est pas le cas la fenêtre est redimensionnée pour prendre tout l'écran mais elle n'a pas l'exclusivité de l'affichage.
La diminution de la résolution est particulièrement conseillée pour augmenter la performance d'affichage ( moins il y a de pixels, mieux c'est ). Une configuration est définie par une instance de <javaClass class="java.awt.DisplayMode" />. Exemple de code :
Avant de vous embarquer dans la réalisation d'un super jeu en plein écran, je vous conseille de vous renseigner un minimum sur les techniques d'optimisation et d'accélération de l'affichage (vois lien ci-dessous).
Et les applets ?
Les applets sont autorisées à passer en affichage plein écran seulement si l'utilisateur a la permission fullScreenExclusive.
Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.