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

Java全屏模式在Ubuntu上不起作用,java,swing,ubuntu,jframe,fullscreen,Java,Swing,Ubuntu,Jframe,Fullscreen,所以我使用Ubuntu,当我想在Java中进入全屏模式时,会出现一个最大屏幕大小的普通窗口,而不是没有标题栏的全屏窗口。我承认,我甚至不确定Java中的全屏模式应该是什么样子,因为我没有在任何其他操作系统上尝试过。但我认为它应该是一个没有标题栏的屏幕。 还有谁有这个问题吗 这是我使用的代码;非常直截了当 public static void main(String[] args) { GraphicsEnvironment env = GraphicsEnvironment

所以我使用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);
}
在win7上,有了这段代码(我按照@Gilberto的建议将undecorated标志设置为true,并添加了一个红色面板),它似乎工作正常。如果无法在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);
    }
}
在Ubuntu(可能还有其他Linux发行版)上,它不起作用。Java中的全屏模式不能覆盖全屏。它省去了工具栏。永远,无论你做什么

我尝试了上面的两个示例,来自官方FSEM的示例和我知道的一些应用程序使用Java/Swing和全屏模式(FreeCol和TripleX),noone能够覆盖屏幕上的任务/工具栏区域

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


一些可能的解释可能会在另一个例子中给出。

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

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

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


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

此线程非常旧,但仍然出现在实际搜索结果中,但答案错误。所以我将发布实际的解决方案

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

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

然后你会有一个装饰过的全屏窗口,有所有的按钮和一个正确的工具栏,它可以与Ubuntu和任何其他操作系统配合使用。

vc.isFullScreenSupported()返回什么?也许在另一个操作系统上尝试一下,然后更新你的问题?我在Windows 7上运行了你的代码,出现了同样的现象——窗口的全屏幕大小,带有标题栏。我认为这是预期的行为而不是false。@Adam它返回true,所以应该可以工作。@trashgod是的,我确实没有添加退出功能;-)我可以工作,但仍然可以看到标题栏,但没有关闭或调整大小选项。这很好:)@Jon这很奇怪。是否确实调用了
setUndecorated(true)
而不是
false
。根据垃圾神的评论,它应该也能在Ubuntu上正常工作。这个相关的,使用Ubuntu12.04.1LTS和OpenJDK1.6.0_24,添加了一个退出
操作