2014-11-23 134 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