How to set JFrame to appear centered, regardless of monitor resolution?

JavaSwingJframePosition

Java Problem Overview


While working with Java, I find it hard to position my main window in the center of the screen when I start the application.

Is there any way I can do that? It doesn't have to be vertically centered, horizontal alignment is the more important goal for me. But vertical alignment is also welcome.

Java Solutions


Solution 1 - Java

Use setLocationRelativeTo(null)

This method has a special effect when you pass it a null. According to the Javadoc:

> If the component is null, or the GraphicsConfiguration associated with this component is null, the window is placed in the center of the screen.

This should be done after setting the size or calling pack(), but before setting it visible, like this:

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

Solution 2 - Java

I always did it in this way:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

where this is the JFrame involved.

Solution 3 - Java

You can call JFrame.setLocationRelativeTo(null) to center the window. Make sure to put this before JFrame.setVisible(true)

Solution 4 - Java

Just click on form and go to JFrame properties, then Code tab and check Generate Center.

enter image description here

Solution 5 - Java

As simple as this...

setSize(220, 400);
setLocationRelativeTo(null);  

or if you are using a frame then set the frame to

frame.setSize(220, 400);
frame.setLocationRelativeTo(null);  

For clarification, from the docs:

>If the component is null, or the GraphicsConfiguration associated with this component is null, the window is placed in the center of the screen.

Solution 6 - Java

i am using NetBeans IDE 7.2.1 as my developer environmental and there you have an option to configure the JForm properties.

in the JForm Properties go to the 'Code' tab and configure the 'Generate Center'. you will need first to set the Form Size Policy to 'Generate Resize Code'.

Solution 7 - Java

I am using NetBeans IDE 7.3 and this is how I go about centralizing my JFrame Make sure you click on the JFrame Panel and go to your JFrame property bar,click on the Code bar and select Generate Center check box.

Solution 8 - Java

If you use NetBeans, simply click on the frame on the design view, then the code tab on its properties. Next, check 'Generate Center'. That will get the job done.

Solution 9 - Java

If you explicitly setPreferredSize(new Dimension(X, Y)); then it is better to use:

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);

Solution 10 - Java

You can use this method, which allows the JFrame to be centered and full screen at the same time.

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH);

Solution 11 - Java

In Net Beans GUI - go to jframe (right click on jFrame in Navigator) properties, under code, form size policy property select Generate Resize Code. In the same window, Untick Generate Position and tick Generate Size and Center.

Enjoy programming. Ramana

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAmateurProgrammerView Question on Stackoverflow
Solution 1 - JavaJRLView Answer on Stackoverflow
Solution 2 - JavaJackView Answer on Stackoverflow
Solution 3 - JavaGregView Answer on Stackoverflow
Solution 4 - Javaعلاء علامView Answer on Stackoverflow
Solution 5 - Javauser3025039View Answer on Stackoverflow
Solution 6 - JavaAsaf MagenView Answer on Stackoverflow
Solution 7 - JavaGstuntzView Answer on Stackoverflow
Solution 8 - JavaKingsley IjikeView Answer on Stackoverflow
Solution 9 - Javauser7205283View Answer on Stackoverflow
Solution 10 - JavaThe AppsolitView Answer on Stackoverflow
Solution 11 - JavaK V RamanaView Answer on Stackoverflow