Java:当窗口未被聚焦时,在第二个显示器上保持全屏

3
我正在编写一个Java应用程序,利用双显示器设置。我有两个窗口:
  • 窗口1 - 主GUI
  • 窗口2 - 在第二个监视器上全屏显示
我的问题:当第二个窗口失去焦点时,它只能保持全屏状态。如果我点击回到窗口1或将焦点切换到其他内容,窗口2会最小化。有没有什么方法让第二个窗口在没有焦点时仍然保持全屏? 以下是使第二个窗口在第二个监视器上全屏显示的代码:
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        frame.setUndecorated(true);
        frame.setVisible(true);
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] gd = ge.getScreenDevices();
        gd[1].setFullScreenWindow(frame); //gets the 2nd display.
2个回答

3
尝试获取第二个显示器的尺寸,然后不要设置全屏显示器,而是设置第二个窗口的尺寸。还可以尝试将第二个窗口设置为始终置顶。

我会尝试调整大小。你说的“getting the site”是什么意思?我该如何将第二个框架设置为“始终置顶”?谢谢! - dan.m.kumar
该网站是一种类型。本意是指大小。JFrame有一个名为“始终置顶”的函数,其他框架无法置于其上方。我相信它是frame.setAlwaysOnTop(true); - TameHog
同时你还需要将位置设置为第一屏幕的宽度加一像素,y坐标为0。 - TameHog
你有点眉目了!我按照你说的尝试了一下,差不多成功了!我的显示器大小不同,所以看起来不太对劲,但它仍然保持活跃状态!我想还需要进行一些额外的调整。 - dan.m.kumar

1
它可以与TameHog的评论一起使用。您的代码变成了:
    frame.setExtendedState(Frame.MAXIMIZED_BOTH);
    frame.setUndecorated(true);
    frame.setVisible(true);
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] gd = ge.getScreenDevices();

    // gd[1].setFullScreenWindow(frame); //gets the 2nd display.
    frame.setAlwaysOnTop(true);
    frame.setSize(gd[1].getDefaultConfiguration().getBounds().getSize());
    frame.setLocation(gd[1].getDefaultConfiguration().getBounds().getLocation());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接