Java:获得一个/所有可用监视器(而不是整个桌面)的分辨率?

iva*_*off 18 java user-interface swing awt

我有两个不同大小的显示器,使用(我相信)TwinView连接在一起.

我试过了

System.out.println(Toolkit.getDefaultToolkit().getScreenSize());
Run Code Online (Sandbox Code Playgroud)

得到

java.awt.Dimension[width=2960,height=1050]
Run Code Online (Sandbox Code Playgroud)

如果你将两个显示器统计在一起,这是真的.

取而代之的是,我希望能够实现以下目标之一:

  • 获得当前监视器的分辨率
  • 获得主显示器的分辨率

z *_* - 22

你会想要使用GraphicsEnvironment.

特别是,getScreenDevices()返回一个GraphicsDevice对象数组,您可以从中读取显示模式的宽度/高度.

例:

GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = g.getScreenDevices();

for (int i = 0; i < devices.length; i++) {
    System.out.println("Width:" + devices[i].getDisplayMode().getWidth());
    System.out.println("Height:" + devices[i].getDisplayMode().getHeight());
} 
Run Code Online (Sandbox Code Playgroud)