Comment positionner le formulaire dans l’écran central?

Je suis un développeur .Net mais je devais créer une application simple en Java pour une raison supplémentaire. J’ai pu créer cette application, mais mon problème est de savoir comment puis-je centrer le formulaire à l’écran au lancement de l’application?

Voici mon code:

private void formWindowActivated(java.awt.event.WindowEvent evt) { // Get the size of the screen Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); // Determine the new location of the window int w = this.getSize().width; int h = this.getSize().height; int x = (dim.width-w)/2; int y = (dim.height-h)/2; // Move the window this.setLocation(x, y); } 

Le code ci-dessus fonctionne bien, mais le problème est que j’ai vu le formulaire se déplacer de la plus grande partie de l’écran vers le centre de l’écran. J’ai également essayé d’append ce code dans l’événement formWindowOpened et affiche toujours la même action. Y a-t-il un meilleur moyen pour cela? Tout comme dans l’ .NET Application il existe une CenterScreen Position . Ou si le code ci-dessus est correct, sur quel événement vais-je le mettre?

Merci d’avoir lu ceci.

Définissez simplement l’emplacement par rapport à null après avoir appelé le pack sur le JFrame, c’est tout.

par exemple,

  JFrame frame = new JFrame("FooRendererTest"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(mainPanel); // or whatever... frame.pack(); frame.setLocationRelativeTo(null); // *** this will center your app *** frame.setVisible(true); 

L’exemple suivant centre un cadre à l’écran:

 package com.zetcode; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GraphicsEnvironment; import java.awt.Point; import javax.swing.JFrame; public class CenterOnScreen extends JFrame { public CenterOnScreen() { initUI(); } private void initUI() { setSize(250, 200); centerFrame(); setTitle("Center"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void centerFrame() { Dimension windowSize = getSize(); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Point centerPoint = ge.getCenterPoint(); int dx = centerPoint.x - windowSize.width / 2; int dy = centerPoint.y - windowSize.height / 2; setLocation(dx, dy); } public static void main(Ssortingng[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { CenterOnScreen ex = new CenterOnScreen(); ex.setVisible(true); } }); } } 

Pour centrer un cadre sur un écran, nous devons obtenir l’environnement graphique local. De cet environnement, nous déterminons le point central. En conjonction avec la taille du cadre, nous parvenons à centrer le cadre. setLocation() est la méthode qui déplace le cadre vers la position centrale.

Notez que c’est en fait ce que fait setLocationRelativeTo(null) :

 public void setLocationRelativeTo(Component c) { // target location int dx = 0, dy = 0; // target GC GraphicsConfiguration gc = getGraphicsConfiguration_NoClientCode(); Rectangle gcBounds = gc.getBounds(); Dimension windowSize = getSize(); // search a top-level of c Window componentWindow = SunToolkit.getContainingWindow(c); if ((c == null) || (componentWindow == null)) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); gc = ge.getDefaultScreenDevice().getDefaultConfiguration(); gcBounds = gc.getBounds(); Point centerPoint = ge.getCenterPoint(); dx = centerPoint.x - windowSize.width / 2; dy = centerPoint.y - windowSize.height / 2; } ... setLocation(dx, dy); } 

Change ça:

 public FrameForm() { initComponents(); } 

pour ça:

 public FrameForm() { initComponents(); this.setLocationRelativeTo(null); } 
 public class Example extends JFrame { public static final int WIDTH = 550;//Any Size public static final int HEIGHT = 335;//Any Size public Example(){ init(); } private void init() { try { UIManager .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); SwingUtilities.updateComponentTreeUI(this); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); setSize(WIDTH, HEIGHT); setLocation((int) (dimension.getWidth() / 2 - WIDTH / 2), (int) (dimension.getHeight() / 2 - HEIGHT / 2)); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } } } 

J’espère que cela sera utile.

mettez ceci en haut du code source:

 import java.awt.Toolkit; 

puis écrivez ce code:

 private void formWindowOpened(java.awt.event.WindowEvent evt) { int lebar = this.getWidth()/2; int tinggi = this.getHeight()/2; int x = (Toolkit.getDefaultToolkit().getScreenSize().width/2)-lebar; int y = (Toolkit.getDefaultToolkit().getScreenSize().height/2)-tinggi; this.setLocation(x, y); } 

bonne chance 🙂

En fait, vous n’avez pas vraiment à coder pour que le formulaire parvienne à l’écran central.

Modifiez simplement les propriétés du jframe
Suivez les étapes ci-dessous pour modifier:

  • clic droit sur le formulaire
  • changer la politique FormSize pour – générer un code de redimensionnement
  • puis modifiez la position du formulaire X -200 Y- 200

Vous avez terminé. Pourquoi prendre la peine de coder? 🙂

Si vous utilisez l’EDI NetBeans, faites un clic droit puis

Propriétés -> Code -> extraire Generate Center

En utilisant cette fonction, vous pouvez définir votre position gagnée

 setBounds(500, 200, 647, 418); 

Essayez d’utiliser ceci:

 this.setBounds(x,y,w,h);