我需要获取JFrame的位置以保存应用程序位置。但问题是getLocationOnScreen()方法返回不正确的结果,或者至少看起来是这样。
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setMinimumSize(new Dimension(200, 200));
frame.setVisible(true);
frame.setLocation(100, 100);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Point point = frame.getLocationOnScreen();
System.out.println(point);
}
});
}
在我的观察中,上述代码应输出 (100, 100),但实际却打印出 "java.awt.Point[x=101,y=128]"。如何才能得到正确的 (100, 100) 结果呢?更新:有时候我会得到 (100, 100) 或者 (101, 128) 结果。我真的无法理解其中的逻辑。更新:此代码运行的两个不同结果如下图所示。