我想构建一个具有2个窗口的应用程序。
第一个应该始终在第一个监视器中,并且不能最大化。
第二个应在第二个监视器中启动(一个完美的示例就像PowerPoint的演示模式一样),它在任何其他应用程序窗口的“顶部”运行,并且始终处于最大化状态。使用指定给第一个窗口的侦听器启动此窗口。
请注意,这些“监视器”可以是演示中使用的LCD投影仪,也可以是真正的台式计算机监视器。

我知道存在GraphicsEnvironment API,并且我们可以知道我们的监视器配置是作为单个监视器还是单独进行处理。但是,我不知道如何实现它。我的意思是,由于屏幕配置可以根据其图形卡而有所不同,因此我们如何验证它们?

例如,如果将3个监视器视为一个高分辨率的监视器,则也许我们可以将第二个窗口的坐标x0设置为:total_width * 2/3。
但是,如果将其作为单独的监视器呢?

谢谢。

最佳答案

@Zecas:是的,效果很好。很抱歉没有在此处发布答案。我完全忘记了
因此,该解决方案正是ShivanDragon所说的,我们可以先获取GraphicsEnvironment,然后再从Environment中获取屏幕设备,从而分别获取每台显示器:

GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();


之后,只需使用:

gs[_screen_index].setFullSCreenWindow(_frame)

08-06 00:12