Java 全屏模式在 Ubuntu 上不起作用

2022-09-02 22:46:32

所以我使用的是Ubuntu,当我想在Java中进入全屏模式时,会出现一个具有最大屏幕尺寸的普通窗口,而不是没有标题栏等的全屏窗口。我承认,我甚至不确定Java中的全屏模式应该是什么样子,因为我没有在任何其他操作系统上尝试过。但我认为它应该是一个没有标题栏的屏幕。还有其他人有这个问题吗?

这是我使用的代码。;非常直接。

public static void main(String[] args) {
    GraphicsEnvironment env = GraphicsEnvironment
            .getLocalGraphicsEnvironment();
    GraphicsDevice vc = env.getDefaultScreenDevice();
    JFrame window = new JFrame();
    window.setUndecorated(false);
    window.setResizable(false);
    vc.setFullScreenWindow(window);
}

答案 1

在Ubuntu上(可能还有其他Linux发行版),它不起作用。Java 中的全屏模式不会覆盖全屏。它省略了工具栏。始终如一,无论你做什么。

我尝试了上面的两个示例以及官方FSEM教程中的示例,以及我知道的一些应用程序正在使用Java / Swing和全屏模式(FreeCol和TripleX),没有人能够覆盖屏幕的任务/工具栏区域。

我的配置是Ubuntu 12.10,带有OpenJDK或SUN-JRE 1.7.0_09以及Unity或Gnome。有趣的是,对 isFullScreenSupported() 的 java 调用返回 true。因此,虽然Java JRE表示它支持全屏独占,但它没有。

在另一个问题中可以给出一些可能的解释。


答案 2

在win7上,使用此代码(我按照@Gilberto的建议将未装饰的标志设置为true,并添加了一个RED面板),它似乎工作正常。如果它在 Ubuntu 上不起作用,则可能意味着不支持全屏模式:

import java.awt.Color;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {
    public static void main(String[] args) {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice vc = env.getDefaultScreenDevice();
        JFrame window = new JFrame();
        JPanel comp = new JPanel();
        comp.setBackground(Color.RED);
        window.add(comp);
        window.setUndecorated(true);
        window.setResizable(false);
        vc.setFullScreenWindow(window);
    }
}