我需要獲取JFrame位置以保存應用程序位置。但問題是getLocationOnScreen()返回不正確的結果。或者至少看起來如此。java JFrame getLocationOnScreen返回錯誤的結果? @ Ubuntu
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)結果?
UPD:有時我也得到(100,100)或(101,128)。我真的不明白它的邏輯。
UPD:此代碼的兩種不同運行。
setLocation根據父級移動到x,y,getLocationOnScreen將根據屏幕獲取位置......但是...在這裏運行代碼後,我確實看到了100,100。你使用哪個Java版本? – porfiriopartida
Java版本「1.7.0_25」 Java™SE運行時環境(版本1.7.0_25-b15) Java HotSpot™服務器虛擬機(版本23.25-b01,混合模式)Ubuntu 12.04 – ferrerverck
有趣的是,我正在使用相同的Java版本,但在Windows中。似乎JFrame在Ubuntu中不是無父母的? – porfiriopartida