当前位置: 首页 > 知识库问答 >
问题:

如何使JFrame填满所有监视器屏幕?[副本]

蔡楚
2023-03-14

我正在用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菜单,但当我将应用程序移动到第二个监视器时,它会完成所有监视器屏幕。

共有1个答案

方安怡
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 我在网页上使用径向渐变作为背景,如下所示: 它可以工作,但是当内容不能填满整个页面时,渐变会被切断。如何使元素始终填充整个页面? 问题答案:

  • 问题内容: 我有一个双监视器配置,如果找到它,我想在特定的监视器中运行我的GUI。我试图创建一个通过屏幕设备对象的窗口,但是它不起作用,框架仍显示在主屏幕上。 如何设置必须显示框架的屏幕? 问题答案:

  • 我想知道如何在JFrame中更改屏幕。例如,从起始屏幕更改为不同的屏幕。因此,在一个屏幕上有各种按钮、标签、树等,当用户单击按钮时,会出现不同的布局。 “setVisible(false)和setVisible(true)”会起作用吗?

  • 首先第一件事, 使用Android Studio 2.3.3 问题: 我的模拟器屏幕覆盖了模拟器可用的唯一部分屏幕,即模拟器的左上角和其余部分只是一个黑色屏幕。 见我所附的照片。 我尝试过的事情: 1) 重新启动仿真器 2) 尝试不同的模拟器 3) 改变像素,模拟器设备的密度, 4)跑- 没有任何帮助!! 注: 我的问题不是模拟器的大小,而是有效的屏幕大小。 如果有人能遇到这个问题,请帮助:( 重

  • 问题内容: 我正在与Android的糟糕布局系统作斗争。我正在尝试用一张桌子填满屏幕(很简单吗?),但是很难做到。 我得到它可以以某种方式在XML中工作: 但是我无法使其在Java中工作。我已经尝试了LayoutParams的一百万种组合,但是没有任何效果。这是我得到的最佳结果,它只能填充屏幕的宽度,而不是高度: 显然,Android文档没有帮助。有人有主意吗? 问题答案: 终于弄清楚了如何做到这