我有一个简单的问题。如何在屏幕上设置JFrame的位置?当我使用setVisible()时,我希望窗口出现在屏幕上的某个位置,可能是x-y坐标。有可能吗?
编辑:我找到了解决方案。我不得不调用setLocationByOs(false)或类似的东西,然后使用setLocation(x,y)答案 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);
是一个神奇的词。