2014-11-23 105 views
1

我有代码看起来像这样,这让我的JFrame全屏:如何在全屏模式下切换全屏Swing框?

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
GraphicsDevice device = env.getDefaultScreenDevice(); 

JFrame myFrame = new JFrame("Title", device); 
myFrame.setVisible(true); 
myFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
myFrame.setUndecorated(true); 
myFrame.setResizable(false); 
myFrame.validate(); 

device.setFullScreenWindow(myFrame); 

我怎么后来得到同样的JFrame停下来是全屏,并恢复仅仅是一个正常的窗口?我没有看到GraphicsDevice类的setFullScreenWindow方法与之相反。我希望能够根据需要来回切换。

回答

2

使用setFullScreenWindow(null);然后调用myFrame.setVisible(true);

+0

非常感谢这一点。还有一个简单的问题:我刚刚意识到我的应用程序实际上并未进入全屏模式。我得到一个'IllegalComponentStateException',在我称之为'setUndecorated(true)'的行上显示'框架是可显示的'。有关如何修复上述代码以使其工作的任何想法? – SoaperGEM 2014-11-23 00:50:30

+1

可能是因为调用了'setExtendedState()'或'myFrame.validate()';它们不是全屏窗口所必需的。 – frenchDolphin 2014-11-23 00:54:28

+0

我做了一些研究,实际的问题是,您将框架设置为一开始就可见。删除该行,你的程序应该可以正常工作。 – frenchDolphin 2014-11-23 01:00:26