【发布时间】:2018-02-21 20:51:35
【问题描述】:
我正在尝试让 JavaFX 检测我正在使用的屏幕分辨率,1080p 或 4k,因此我可以相应地调整程序的大小/位置。
我试过Screen.getPrimary().getDpi(),它打印出“96”。使用Toolkit.getDefaultToolkit().getScreenResolution() 我得到了“144”的结果。我不知道哪个是正确的,或者是否有更好的方法。
请帮忙。谢谢。
【问题讨论】:
-
大多数时候,您不需要“让 JavaFX 检测我使用的屏幕分辨率,1080p 或 4k,因此我可以相应地调整/定位我的程序”。 JavaFX 在计算大小时会考虑默认设备输出缩放。也就是说,JavaFX 坐标系统基于输出缩放像素,而不是显示器的物理像素。这样,无论使用 4K 还是 1080p 显示器,应用程序都将显示良好的缩放比例。如果应用程序窗口在两个不同的显示器之间分开,甚至可以。
-
我的猜测是你得到 96 作为 JavaFX 的 dpi 和 144 作为 AWT 工具包的屏幕分辨率,因为 AWT 工具包没有考虑到 150% 的 output scale display setting由您的操作系统应用以将输出缩放到您正在测量的给定显示器上。也就是说,AWT 报告物理像素 DPI,JavaFX 报告输出缩放 DPI。
标签: javafx screen screen-resolution