GraphicsDevice - 无法从全屏返回

时间:2011-05-27 10:56:29

标签: java graphics jframe fullscreen

我目前正在尝试在Linux中运行Java的全屏窗口。问题是我实际上可以使JFrame全屏,但如果框架未设置,则无法再次返回原始窗口。如果窗户装饰我可以恢复到原来的大小。

    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice gs = ge.getDefaultScreenDevice();
    ...
    f.setUndecorated(true);//If set Window can't return to original size
    gs.setFullScreenWindow(f);

    gs.setFullScreenWindow(null);//Doesn't work!

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

changeFrameFullScreenMode(Frame app){
  GraphicsDevice gd = GraphicsEnvironment
   .getLocalGraphicsEnvironment().getDefaultScreenDevice();
  if (gd.getFullScreenWindow() == null){
    app.dispose();
    app.setUndecorated(true);
    gd.setFullScreenWindow(app);
    app.setVisible(true);
  }else{ // back to windowed mode
    app.dispose();
    app.setUndecorated(false);
    gd.setFullScreenWindow(null);
    app.setVisible(true);
  }
}

答案 1 :(得分:0)

我认为您无法可靠地将未修饰的全屏帧更改回窗口模式。我建议创建两个JFrame,一个全屏,另一个窗口。当您想要返回到窗口模式时,将内容窗格添加到窗口框架(这会自动将其从全屏框架中删除),例如。

windowedFrame.setContentPane(fullScreenFrame.getContentPane());
windowedFrame.pack();
windowedFrame.setVisible(true);
fullScreenFrame.dispose();