第二个监视器上全屏独占模式下的Java帧

第二个监视器上全屏独占模式下的Java帧,java,fullscreen,multiple-monitors,Java,Fullscreen,Multiple Monitors,我正在与这种问题作斗争。我的应用程序创建了两个帧。第一个用于操作员,在正常模式下应在第一个监视器上。另一种是“客户”显示器,应在第二台显示器上全屏显示。因为方便,我决定使用全屏独家版。问题是,在监视器0上显示帧很容易,但我无法强制选择第二个帧。帧仍显示在监视器编号0而不是1中 GraphicsDevice screen = GraphicsEnvironment. getLocalGraphicsEnvironment().getScreenDevices()[1];

我正在与这种问题作斗争。我的应用程序创建了两个帧。第一个用于操作员,在正常模式下应在第一个监视器上。另一种是“客户”显示器,应在第二台显示器上全屏显示。因为方便,我决定使用全屏独家版。问题是,在监视器0上显示帧很容易,但我无法强制选择第二个帧。帧仍显示在监视器编号0而不是1中

GraphicsDevice screen = GraphicsEnvironment.
        getLocalGraphicsEnvironment().getScreenDevices()[1];
        //it is in program config which display should be used.
        //Of course monitor is present and listed by getScreenDevices as array[1]
JFrame frame = new JFrame("Fullscreen Display");
if (screen.isFullScreenSupported()) {
frame.dispose();
frame.setUndecorated(true);
System.out.println("FEM available on: "+ screen.getIDstring());
frame.repaint();
screen.setFullScreenWindow(frame);
}

我刚刚运行了你的代码,我可以成功地改变你的画面弹出的屏幕。如果您将此行上的1更改为0-->


帧出现在另一个监视器上。

Hmmm,这很奇怪,因为如果我得到0,它将在监视器0上运行,如果得到1,它将再次在监视器0上运行。。。也许这取决于操作系统。我在W7Prox64和Jdk6上运行它。。。
GraphicsDevice screen = GraphicsEnvironment.
getLocalGraphicsEnvironment().getScreenDevices()[1];