我尝试使用 100% 全屏模式,我使用的是 Ubuntu 12.10,左侧是侧边栏,顶部是菜单。当我运行全屏模式时,它不会覆盖这两个菜单栏,而是位于它们旁边:
它应该覆盖左侧菜单栏和顶部黑条。有人知道为什么没有吗?
package sscce;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
public class Main extends JFrame{
public Main(){
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice myDevice = ge.getDefaultScreenDevice();
this.setUndecorated(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myDevice.setFullScreenWindow(this);
}
public static void main(String[] args){
Main main = new Main();
}
}
答案1
这是预期的行为。设置全屏窗口向操作系统发送请求,操作系统返回桌面的尺寸:启动器右侧和菜单栏下方的区域。
我的背景是 Windows 开发(尽管我现在正在尽可能快地学习 Linux 开发),所以我无法给出如何更改代码的精确细节。但在 Windows 中,你需要各种 Win API 调用,以及通过 JNI/JNA 的本机接口才能做到这一点。有关 Unity 中此问题的优秀文章,请参阅http://eclipseandlinux.blogspot.com/2011/12/eclipse-unity-integration-without-jna.html
如果这是一个供个人使用的应用程序,你当然可以做任何你想做的事情。但是如果你是为其他人开发,我可以恭敬地说,覆盖此行为通常不是一个好主意。桌面的工作方式应被视为一种合同。如果应用程序掩盖了他们控制桌面的预期方式,用户可能会感到困惑和沮丧。