我正在用 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 菜单位于右侧和顶部,但是当我将应用程序移至第二个显示器时,它会填充所有显示器屏幕。
最佳答案
虽然这通常足以显示全屏窗口(方法顺序很重要!):
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 );
}
} );
}
}
仅仅让您的系统将该窗口识别为真正的全屏是不够的。不过,您是否需要它取决于您,因为真正的全屏窗口有其自身的优点和缺点。
要使任何窗口
成为系统中的实际全屏窗口 - 您需要将其传递到图形设备,如下所示:
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 ();
您还可以请求图形设备的实际尺寸及其相互之间的相对位置,以更好地了解用户屏幕相对于彼此的位置(在系统设置中配置)。
关于java - 如何让JFrame充满整个显示器屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57713447/