4

在调用 setVisible(true) 之前将 JFrame N 像素(例如在 x 方向上 300 像素)放置在远离屏幕中心的代码是什么?

4

4 回答 4

9

我通常会执行以下操作来使 JFrame 居中。您可以将偏移量添加到wdwLeft变量中,如清单所示,以使框架偏离中心。(调用setPreferredSize()是多余的,只是为了使这个演示工作。)

package testapplication;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class MyJFrame extends JFrame {

    MyJFrame() {
        super("Test");
        Dimension screenSize = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
        setPreferredSize(new Dimension(200, 200));
        Dimension windowSize = new Dimension(getPreferredSize());
        int wdwLeft = 300 + screenSize.width / 2 - windowSize.width / 2;
        int wdwTop = screenSize.height / 2 - windowSize.height / 2;
        pack();   
        setLocation(wdwLeft, wdwTop);
    }

    public static void main(final String [] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                final MyJFrame jf = new MyJFrame();
                jf.setVisible(true);
            }
        }
       );
    }
 }

您可以添加额外的逻辑来确保偏移窗口仍然完全在屏幕内,如getMaximumWindowBounds().

于 2009-11-06T14:59:19.267 回答
2

Frame Javadoc提供的一些信息可以帮助您在使用 setLocation() 方法调用 setVisible(true) 之前设置 JFrame 的位置

您可以通过调用GraphicsEnvironment.getCenterPoint()来获取屏幕的中心点

于 2009-11-06T13:56:55.180 回答
1

简单设置:

FormName.setLocation(X-Axis Coordinate, Y-Axis Coordinate);
于 2010-12-16T06:16:26.873 回答
0
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension windowSize = window.getSize();
int windowX = Math.max(0, (screenSize.width  - windowSize.width ) / 2);
int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2);
f.setLocation(windowX, windowY);  // Don't use "f." inside constructor.

                                   OR

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(screenSize.width - 4, screenSize.height - 4);
f.validate();                // Make sure layout is ok
于 2010-12-16T06:22:10.723 回答