TITLE:Windowのフルスクリーン化
#navi(../)
#tags(GraphicsEnvironment, JFrame, JDialog)
RIGHT:Posted by &author(aterai); at 2008-04-28
* Windowのフルスクリーン化 [#kfe10736]
``JDialog``や``JFrame``などを、フルスクリーン表示に切り替えます。

- &jnlp;
- &jar;
- &zip;

#ref(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTNRUUD2xI/AAAAAAAAAag/G7fNPgecnss/s800/FullScreen.png)

** サンプルコード [#adab7743]
#code(link){{
private void toggleFullScreenWindow() {
  GraphicsEnvironment graphicsEnvironment
    = GraphicsEnvironment.getLocalGraphicsEnvironment();
  GraphicsDevice graphicsDevice
    = graphicsEnvironment.getDefaultScreenDevice();
  if(graphicsDevice.getFullScreenWindow()==null) {
    dialog.dispose(); //destroy the native resources
    dialog.setUndecorated(true);
    dialog.setVisible(true); //rebuilding the native resources
    graphicsDevice.setFullScreenWindow(dialog);
  }else{
    graphicsDevice.setFullScreenWindow(null);
    dialog.dispose();
    dialog.setUndecorated(false);
    dialog.setVisible(true);
    dialog.repaint();
  }
  requestFocusInWindow();
}
}}

** 解説 [#f039da11]
上記のサンプルは、``JDialog``をフルスクリーン表示とウィンドウ表示に切り替えることが出来ます。

- KBD{F11}キー、ダブルクリック
-- フルスクリーン表示、ウィンドウ表示の切り替え
- KBD{Esc}キー
-- アプリケーション終了

----
フルスクリーン表示とウィンドウ表示を切り替える前に、タイトルバーの非表示、表示も``setUndecorated``メソッドで切り替えていますが、このメソッドを使用する前に一旦``dispose``してウインドウのネイティブリソースを開放しておく必要があります。

- ``setUndecorated(boolean undecorated)``は、ダイアログが表示されていないときにだけ呼び出すことができますが、この「表示されていない」は ``isVisible()``ではなく、``isDisplayable()``が``false``の意味なので、``dialog.setVisible(false);``としただけでは、 ``Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The dialog is ''displayable''.`` が発生します。
-- [http://docs.oracle.com/javase/jp/6/api/java/awt/Window.html#dispose() Window#dispose()]
-- [http://docs.oracle.com/javase/jp/6/api/java/awt/Dialog.html#setUndecorated(boolean) Dialog#setUndecorated(boolean)]
-- [http://docs.oracle.com/javase/jp/6/api/java/awt/Component.html#isDisplayable() Component#isDisplayable()]

----
%%``WebStart``(署名無し)から実行した場合、タスクバー(``Windows``)などを消してフルスクリーン化は出来ないようです。%%

** 参考リンク [#e33e3400]
- [http://java.sun.com/docs/books/tutorial/extra/fullscreen/index.html Lesson: Full-Screen Exclusive Mode API ]

** コメント [#xe7709ed]
#comment