Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to position the form in the center screen?

I'm a .Net developer but somehow I was task to create a simple application in java for some extra reason. I was able to create that application but my problem is how can i center the form in the screen when the application is launched?

Here is my 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); } 

The code above works fine but the problem is I've seen the form moving from the topleft most to center screen. I also tried adding that code in formWindowOpened event and still shows same action. Is there a better way for this? Just like in .NET Application there is a CenterScreen Position. Or if the code above is correct, on what Event will i put it?

Thanks for reading this.

like image 531
John Woo Avatar asked Mar 03 '12 03:03

John Woo


People also ask

How do you position a form in the center?

Use the CSS text-align Property to Center a Form in HTML We can set the value to center to center the form. For example, apply the text-align property to the form tag in the style attribute, and set the property to center . Next, create input tags with the type text and then submit .

How do you move a form to the center in HTML?

To actually center the page, add margin: auto .


2 Answers

Simply set location relative to null after calling pack on the JFrame, that's it.

e.g.,

  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); 
like image 88
Hovercraft Full Of Eels Avatar answered Sep 22 '22 11:09

Hovercraft Full Of Eels


The following example centers a frame on the screen:

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(String[] args) {         EventQueue.invokeLater(new Runnable() {             @Override             public void run() {                 CenterOnScreen ex = new CenterOnScreen();                 ex.setVisible(true);             }         });            } } 

In order to center a frame on a screen, we need to get the local graphics environment. From this environment, we determine the center point. In conjunction with the frame size, we manage to center the frame. The setLocation() is the method that moves the frame to the central position.

Note that this is actually what the setLocationRelativeTo(null) does:

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); } 
like image 23
Jan Bodnar Avatar answered Sep 23 '22 11:09

Jan Bodnar