最近在做一个Java程序,想获取屏幕的宽高信息。搜索一番,一般都是通过以下的代码获取宽高信息。
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int width = dim.width;
int height = dim.height;
但是我的系统分辨率是1920*1080,获取到的数值却是1536*864。原因应该是Windows10系统的“显示设置”中将“缩放与布局”设置为125%(1920÷1536=1.25,1080÷864=1.25)。
导致上面的代码不适用于这种情况下的获取屏幕的宽高。
最后在Stackoverflow中找到另一种获取屏幕宽高的方式。
//获取默认屏幕
GraphicsDevice graphDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
DisplayMode disMode = graphDevice.getDisplayMode();
int width = disMode.getWidth();
int height = disMode.getHeight();
这种方式原本是为了获取具有多屏幕情况下的屏幕分辨率,但是对于Windows10中修改了“缩放与布局”的情况也适用。
不知道是否有其他方式来处理。