setLocationRelativeTo(null)不是框架的居中

时间:2013-06-18 03:05:41

标签: java swing jframe frame

我想将帧定位在屏幕的中心,但是当我输入f.setLocationRelativeTo(null)时。它将它定位在右下角。代码有问题吗?如果是这样,我怎样才能将其更改为框架中心?

public class Maze {

    public static void main(String[] args) {
        new Maze();
    }

    public Maze(){
        JFrame f = new JFrame();
        f.setTitle("Maze Game");
        //f.add(new board());
        f.setLocationRelativeTo(null);
        f.setSize(500, 400);
        f.setVisible(true);
        f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

    }
}

2 个答案:

答案 0 :(得分:3)

当您使用setLocationRelativeTo()作为参数致电null时,您必须先致电setSize() 。否则,即使您的框架看起来像是程序其余部分的500x400窗口(对您而言!),对于setLocationRelativeTo()方法,它基本上看起来像一个无量纲点(窗口的左上角) ....这将是它的中心,导致窗口出现在右下角。

答案 1 :(得分:0)

您要完成的任务应如下所示:

    public static void main(String[] args) {
    new Maze();
}

public Maze(){
    JFrame f = new JFrame();
    f.setTitle("Maze Game");
    f.add(new board());
        //Notice I took out your comment over f.add to show the f.pack() method and where
        //your 'setLocationRelativeTo(null); statement should go in terms of it.
    f.setSize(500, 400);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //NOTICE! I changed the above line from (f.EXIT_ON_CLOSE) to (JFrame.EXIT_ON_CLOSE)
        // DO NOT LOOK OVER THAT!
    f.pack();
    f.setLocaitonRelativeTo(null);

}

关于秩序,我的朋友。