【问题标题】:Java Fullscreen mode not working on UbuntuJava 全屏模式在 Ubuntu 上不起作用
【发布时间】:2023-03-17 17:53:01
【问题描述】:

所以我使用的是 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);
}

【问题讨论】:

  • vc.isFullScreenSupported() 返回什么?
  • 也许可以在其他操作系统上尝试,然后更新您的问题?
  • 我在 Windows 7 上运行了你的代码并出现了同样的现象——窗口是屏幕的全尺寸,带有标题栏。我认为这是预期的行为。
  • 尝试设置window.setUndecorated(true);而不是false。
  • @Adam 它返回 true,所以它应该可以工作。

标签: java swing ubuntu jframe fullscreen


【解决方案1】:

在 Ubuntu(可能还有其他 Linux 发行版)上它不起作用。 Java 中的全屏模式不覆盖全屏。它将工具栏排除在外。永远,无论你做什么。

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

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

其他question可能会给出一些可能的解释。

【讨论】:

    【解决方案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);
        }
    }
    

    【讨论】:

    • @trashgod 是的,我还没有真正添加退出功能 ;-)
    • 我工作了,但我仍然看到标题栏,但没有关闭或调整大小选项。所以这很好:)
    • @Jon 这很奇怪。你确定你叫setUndecorated(true)而不是false。根据trashgod 的评论,它应该也可以在Ubuntu 上正常工作。
    • 这个相关的example,使用Ubuntu 12.04.1 LTS和OpenJDK 1.6.0_24,增加了退出Action
    【解决方案3】:

    这个话题已经很老了,但仍然出现在实际的搜索结果中,但答案有误。所以我会发布实际的真正解决方案。

    Swing 全屏将使用 setExtendedState() 函数设置,而不是 setFullScreenWindow() 函数!

    JFrame myFrame = new JFrame();
    ....
    myFrame.setExtendedState(MAXIMIZED_BOTH);
    

    然后,您将拥有一个装饰精美的全屏窗口,其中包含所有按钮和正确的工具栏光学元件,它可以在 Ubuntu 和任何其他操作系统上正常工作。

    【讨论】:

      【解决方案4】:

      虽然这在大多数情况下可能不适用,但我想分享我对这个问题的解决方案。

      就我而言,我经常需要为我们的大学机构开发 Java/Scala 应用程序(心理测试)。为了解决这个问题,我们决定在我们的实验电脑上安装锯鱼。

      如果此解决方案适用于您的需求,您可以通过 Ubuntu 设施(软件中心、Aptitute、apt-get)安装(非常过时的)锯鱼,或者 - 我更喜欢 - 安装或编译最新的手动锯鱼。

      其他窗口和/或桌面管理器可能提供类似的功能,但是当我们尝试使用禁用/删除面板的 XFCE 或 LXDE 时,我们遇到了伪像。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-17
        • 2015-03-10
        • 1970-01-01
        • 1970-01-01
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多