JavaFX Screen.getPrimary()。getBounds()返回不正确的屏幕大小

时间:2016-12-03 18:36:26

标签: javafx

尝试在Windows设备上获取用户监视器的分辨率(不是像素数但是当前工作分辨率)时,我遇到了一些有趣的问题。 Screen.getPrimary().getBounds()在ALMOST所有系统上返回正确的结果。它与Win 10笔记本电脑有问题。即使它们是4K和FullHD设备,它们的分辨率也被认为是1280x768。

我也尝试过以下方法:

  • Toolkit.getDefaultToolkit().getScreenSize()
  • Screen.getScreens()然后遍历所有屏幕(只找到一个)
  • GraphicsDevice getDisplayMode().getWidth();
  • GraphicsEnvironment getScreenDevices()然后遍历所有屏幕(只找到一个)

我没有更多的想法。有没有其他方法可以在所有Windows设备上正确获取屏幕分辨率?

1 个答案:

答案 0 :(得分:1)

我既不知道你的设备也不知道Windows 10,但有一件事你应该记住。报告的大小不是设备的物理像素大小。而是报告缩放的大小。在Windows上,这取决于设备的显示设置。例如,我的Mac的物理像素大小为2880x1800,但报告的大小为1440x900。根据您的设置,这并不总是正好2的因素。