定位JFrame

时间:2014-02-27 17:24:01

标签: jframe

我有一个简单的问题。如何在屏幕上设置JFrame的位置?当我使用setVisible()时,我希望窗口出现在屏幕上的某个位置,可能是x-y坐标。有可能吗?

编辑:我找到了解决方案。我不得不调用setLocationByOs(false)或类似的东西,然后使用setLocation(x,y)

3 个答案:

答案 0 :(得分:1)

试试这个:

        final Dimension d = this.getToolkit().getScreenSize(); 
        this.setLocation((int) ((d.getWidth() - this.getWidth()) / 2), (int) ((d.getHeight() - this.getHeight()) / 2));

这使得JFrame出现在每个屏幕的中心。

答案 1 :(得分:0)

在提出新问题之前尝试搜索现有答案。在StackOverflow搜索框中输入您的问题很容易就能得到答案。

初始化表单时,只需在调用pack()之后将setLocation(int x, int y);放在行上;

pack();
setLocation(int x, int y);

请点击此处查看更深入的答案:Best practice for setting JFrame locations

在寻找方法时,您经常可以在JavaDocs中找到它,例如您的问题的答案:http://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#setLocation%28int,%20int%29

答案 2 :(得分:0)

有很多不同的方法可以解决这个问题。以下是我通常设置JFrame的方法:

import java.awt.Canvas;
import javax.swing.JFrame;

public class Window extends Canvas{
    public Window(Launcher launcher){
        JFrame frame = new JFrame("Example");
        frame.setSize(800,480);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(launcher);
        frame.setVisible(true);
        launcher.setFrame(frame);
    }
}

此类由Launcher初始化,extends Canvas implements Runnable并使用线程。

frame.setLocationRelativeTo(null);是一个神奇的词。