0

我想将框架定位在屏幕中央,但是当我输入 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);

    }
}
4

2 回答 2

4

当你调用setLocationRelativeTo()withnull作为参数时,你必须在它setSize() 之前调用。否则,即使您的框架对于程序的其余部分(以及您!)来说可能看起来像一个 500x400 的窗口,但对于该setLocationRelativeTo()方法来说,它本质上看起来像一个无量纲点(窗口的左上角)......是它将居中的位置,导致窗口出现在右下角。

于 2013-06-20T22:48:52.597 回答
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);

}

一切都是为了秩序,我的朋友。

于 2014-12-12T02:04:11.790 回答