Java:不聚焦时,将窗口全屏显示在第二个监视器中

Java:不聚焦时,将窗口全屏显示在第二个监视器中,java,swing,user-interface,jframe,multiple-monitors,Java,Swing,User Interface,Jframe,Multiple Monitors,我正在编写一个利用双监视器设置的java应用程序。我有两个窗口: 窗口1-主GUI 窗口2-第二个监视器全屏显示 我的问题是:第二个窗口只有在有焦点时才保持全屏。如果我在窗口1上单击后退或将焦点更改为其他内容,窗口2将最小化是否有办法使窗口2在没有焦点时保持全屏? 下面是我在第二个监视器上使第二个窗口全屏显示的代码: frame.setExtendedState(Frame.MAXIMIZED_BOTH); frame.setUndecorated(true)

我正在编写一个利用双监视器设置的java应用程序。我有两个窗口:

  • 窗口1-主GUI
  • 窗口2-第二个监视器全屏显示
我的问题是:第二个窗口只有在有焦点时才保持全屏。如果我在窗口1上单击后退或将焦点更改为其他内容,窗口2将最小化是否有办法使窗口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.

尝试获取第二个监视器的大小,然后设置第二帧的大小,而不是设置全屏监视器。还可以尝试将第二帧设置为始终在顶部

它与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());

我试试这个尺寸的。你说的“获取网站”是什么意思?我如何将第二帧设置为“始终在顶部”?谢谢该站点是一个类型。意思是说大小。Jframe有一个名为always on top的函数,在这个函数中,没有其他帧可以位于顶部。我相信这是
frame.setAlwaysOnTop(true)并且你还必须将位置设置为第一个屏幕的宽度加上一个像素,y设置为0。你已经成功了!我像你说的那样试过了,几乎成功了!我的显示器大小不同,所以看起来不太对劲,但它仍然保持活动状态!我想还需要一些额外的修补。