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.
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 .
To actually center the page, add margin: auto .
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);
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); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With