【问题标题】:How to make JFrame fullfill all the monitor screen? [duplicate]如何让 JFrame 填满整个显示器屏幕? [复制]
【发布时间】:2023-12-25 03:11:01
【问题描述】:

我正在用 Java 创建一个需要满足所有监视器屏幕的应用程序。

我正在使用 .setExtendedState(MAXIMIZED_BOTH) 但它只满足工作空间。

        JFrame frame = new JFrame("Pomodoro");
        frame.setContentPane(new Pomodoro().panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
        frame.setExtendedState(MAXIMIZED_BOTH);
        frame.setUndecorated(true);
     }

我希望该应用程序能够占据所有监视器屏幕 - 就像 youtube 视频一样。 现在,当我打开应用程序时,我的 Linux 菜单在右侧和顶部,但是当我将应用程序移动到第二台显示器时,它会显示所有显示器屏幕。

【问题讨论】:

  • 您进行了搜索吗?请参阅this 问题。

标签: java swing jframe fullscreen


【解决方案1】:

虽然这通常足以显示全屏窗口(方法顺序很重要!):

public class FullscreenWindow
{
    public static void main ( final String[] args )
    {
        SwingUtilities.invokeLater ( new Runnable ()
        {
            @Override
            public void run ()
            {
                final JFrame frame = new JFrame ();
                frame.setExtendedState ( JFrame.MAXIMIZED_BOTH );
                frame.setUndecorated ( true );
                frame.setVisible ( true );
            }
        } );
    }
}

仅仅让您的系统将该窗口识别为真正的全屏是不够的。是否需要它取决于您,因为真正的全屏窗口有其自身的优点和缺点。

要使任何Window 成为系统中的实际全屏窗口 - 您需要将其传递到图形设备,如下所示:

public class FullscreenWindow
{
    public static void main ( final String[] args )
    {
        SwingUtilities.invokeLater ( new Runnable ()
        {
            @Override
            public void run ()
            {
                final JFrame frame = new JFrame ();
                frame.setExtendedState ( JFrame.MAXIMIZED_BOTH );
                frame.setUndecorated ( true );
                frame.setVisible ( true );
                frame.getGraphicsConfiguration ().getDevice ().setFullScreenWindow ( frame );
            }
        } );
    }
}

图形设备基本上代表您连接到 PC 的单个屏幕设备,显然可能不止一个。

虽然上面的示例只会让您的窗口在其当前的图形设备(该窗口主要放置在的屏幕)上全屏显示,但您也可以在任何其他可用的图形设备上使您的窗口全屏显示。

您可以像这样检索可用图形设备的完整列表:

GraphicsDevice[] screenDevices = GraphicsEnvironment.getLocalGraphicsEnvironment ().getScreenDevices ();

您还可以请求图形设备的实际尺寸及其彼此之间的相对位置,以更好地了解用户屏幕的相对位置(在系统设置中配置)。

【讨论】:

    最近更新 更多