当用户在 Windows 设置上更改屏幕分辨率时,如何使用 Java 获得正确的显示 DPI?

How to get correct DPI of display with Java, when user change the screen resolution on Windows settings?

为了能够获得 dpi 值,我正在使用这个:

float dpi = Toolkit.getDefaultToolkit().getScreenResolution();

预先显示设置,当我应用1366 x 768作为分辨率值时;

dpi值returns96(这是我所期望的)

但是,当我在设置中将 800 x 600 更改为分辨率值时;

dpi 值 returns 96(该值应该低于 96

当我在 mac 计算机上尝试相同的情况时,正确的值出现了。

我认为来自 Windows OS 的分辨率值有问题。我测试了 Windows 7Windows 10.

Edit :要了解我为什么需要这个值,请检查这个问题及其 answer

我认为答案在 official documentation 中:

Specifies what size to show text and other items on the screen. Windows DPI value is an integer between 96 and 480. Supported values include 96, 120, and 144. By default, Windows uses automatic DPI configuration.

这就是它 returns 96 800 x 600 的原因。