LocationRelativeTo (JAVA) 失败
LocationRelativeTo (JAVA) is Failing
我经常使用:
setLocationRelativeTo(null);
在我的 JFrame 构造函数中使 Frame 出现在正中间,但现在不起作用。它只是将 JFrame 放在一个角落。
如果您知道这是怎么回事,或者如果您现在有另一种方法始终使 Jframe 出现在任何计算机的中间,请告诉我。
我这么说是因为我可以使用
setLocation(x,y);
并且只放置将 Jframe 放在屏幕中央的坐标,但是,例如,如果我的 PC 是 1920 x 1080,则 Jframe 不会出现在 1280 x 720 PC 的中央。
如果我在这方面有误,请纠正我,我是 Java 的新手,所以我可能会错过很多比尔盖茨不会错过的事情。 (我现在windows没有编码在Java)
作为参考,这里有一个可以正常工作的例子;您可以将其与您当前的方法进行比较。特别是,
Swing GUI 对象应该在 event dispatch thread.
上 仅 构建和操作
一定要pack()
封闭的top-level container。
调用 setVisible(true)
作为创建 GUI 的最后 步骤。
MCVE:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
/** @see */
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();
});
}
}
我经常使用:
setLocationRelativeTo(null);
在我的 JFrame 构造函数中使 Frame 出现在正中间,但现在不起作用。它只是将 JFrame 放在一个角落。
如果您知道这是怎么回事,或者如果您现在有另一种方法始终使 Jframe 出现在任何计算机的中间,请告诉我。
我这么说是因为我可以使用
setLocation(x,y);
并且只放置将 Jframe 放在屏幕中央的坐标,但是,例如,如果我的 PC 是 1920 x 1080,则 Jframe 不会出现在 1280 x 720 PC 的中央。
如果我在这方面有误,请纠正我,我是 Java 的新手,所以我可能会错过很多比尔盖茨不会错过的事情。 (我现在windows没有编码在Java)
作为参考,这里有一个可以正常工作的例子;您可以将其与您当前的方法进行比较。特别是,
Swing GUI 对象应该在 event dispatch thread.
上 仅 构建和操作
一定要
pack()
封闭的top-level container。调用
setVisible(true)
作为创建 GUI 的最后 步骤。
MCVE:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
/** @see */
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();
});
}
}