Посмотрите на https://tvbrowser.svn.sourceforge.net/svnroot/tvbrowser/trunk/tvbrowser/src/tvbrowser/ui/mainframe/MainFrame.java
В методе switchFullscreenMode()
:
dispose();
...
setFullScreenWindow(...);
setUndecorated(true/false);
setBounds(mXPos, mYPos, mWidth, mHeight);
...
setVisible(true);
На самом деле происходит гораздо больше вещей, скрывающих различные боковые панели, которые появляются, если мышь касается боковых сторон.
Также обратите внимание, что вы должны явно установить границы. Window.setExtendedState(MAXIMIZED_BOTH)
плохо вмешивается в своевременную близость к dispose (), потому что они оба полагаются на множество собственных событий операционной системы, которые теряются, если окно не будет отображаться в эти доли секунды.
Я не рекомендую использовать экран по умолчанию напрямую:
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
и вместо этого используйте экран, ваш JFrame в данный момент включен:
setBounds(getGraphicsConfiguration().getBounds());
getGraphicsConfiguration().getDevice().setFullScreenWindow(this);
Хотя в настоящее время оно такое же, в будущем оно может измениться.