我经常使用:
setLocationRelativeTo(null);
在我的JFrame构造函数中,使Frame显示在中间,但现在它不起作用。它只是把JFrame放在一个角落里。
如果你知道发生了什么,或者现在你想让Jframe出现在任何计算机中间的另一种方式,请告诉我。
我说这是因为我可以使用
setLocation(x,y);
并且只是放置将Jframe放在我的屏幕中心的坐标,但是,例如,如果我的PC是1920 x 1080,Jframe将不会出现在1280 x 720 PC的中央。
如果我错了,请纠正我,我是Java的新手,所以我可以错过比尔盖茨不会错过的很多东西。 (我现在的Windows不是用Java编写的)
答案 0 :(得分:1)
供参考,这是一个正常工作的例子;你可以将它与你目前的方法进行比较。特别是,
应在event dispatch thread上仅构建和操作Swing GUI对象。
请务必pack()
附上top-level container。
在创建GUI时调用setVisible(true)
作为 last 步骤。
MCVE:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
/** @see https://stackoverflow.com/a/29643591/230513 */
public class Test {
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JLabel("Test", JLabel.CENTER));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
new Test().display();
});
}
}