• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JDialogをESCキーで閉じる
#navi(../)
*JDialogをESCキーで閉じる [#v1b20b60]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2004-03-15~
更新日:&lastmod;

#contents

**概要 [#za1a28d9]
ESCキーを押すと閉じるJDialogを作成します。
大部分を[[JDialog says ESC key is already registered--where?>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=468363]]から、そのまま引用しています。
大部分を[[JDialog says ESC key is already registered--where?>http://forum.java.sun.com/thread.jspa?threadID=468363]]から、そのまま引用しています。

#screenshot

**サンプルコード [#k02432cf]
#code{{
 final JDialog dialog = new JDialog(frame, "タイトル", true);
 AbstractAction act = new AbstractAction("了解") {
   public void actionPerformed(ActionEvent evt) {
     dialog.dispose();
   }
 };
 InputMap imap = dialog.getRootPane().getInputMap();
 imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "close-it");
 dialog.getRootPane().getActionMap().put("close-it", act);

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

**解説 [#f3c1a4c6]
JOptionPane.showMessageDialog()メソッドで作成したダイアログは、ESCキーを押すと閉じますが、JDialogの場合は閉じてくれません。そこでJDialogでもESCキーを押すと閉じるようにInputMapなどを使って設定します。

**参考リンク [#x13c393a]
-[[JDialog says ESC key is already registered--where?>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=468363]]
-[[ESC Key to Close a JFrame>http://forum.java.sun.com/thread.jspa?forumID=57&threadID=449624]]
-[[JDialog says ESC key is already registered--where?>http://forum.java.sun.com/thread.jspa?threadID=468363]]
-[[ESC Key to Close a JFrame>http://forum.java.sun.com/thread.jspa?threadID=449624]]

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