TITLE:JDialogをESCキーで閉じる

JDialogをESCキーで閉じる

編集者:Terai Atsuhiro~

作成日:2004-03-15
更新日:2021-09-19 (日) 10:55:00
  • category: swing folder: InputMap title: JDialogをESCキーで閉じる tags: [JDialog, InputMap, ActionMap] author: aterai pubdate: 2004-03-15T08:18:43+09:00 description: Escキーを押すと閉じるJDialogを作成します。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTOj22ObUI/AAAAAAAAAck/b5izKCmGkHk/s800/InputMap.png

概要

Escキーを押すと閉じるJDialogを作成します。Swing (Archive) - JDialog says ESC key is already registered--where?からの引用です。

概要

ESCキーを押すと閉じるJDialogを作成します。 大部分をJDialog says ESC key is already registered--where?から、そのまま引用しています。

#screenshot

サンプルコード

#spanend
#spandel
final JDialog dialog = new JDialog(frame, "タイトル", true);
#spanend
#spandel
AbstractAction act = new AbstractAction("了解") {
#spanend
  public void actionPerformed(ActionEvent evt) {
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JDialog dialog = new JDialog(frame, "title", true);
#spanend
#spanadd
AbstractAction act = new AbstractAction() {
#spanend
  @Override public void actionPerformed(ActionEvent e) {
    dialog.dispose();
  }
};
#spandel
InputMap imap = dialog.getRootPane().getInputMap();
#spanend
#spanadd
InputMap imap = dialog.getRootPane().getInputMap(
#spanend
  JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "close-it");
dialog.getRootPane().getActionMap().put("close-it", act);
  • &jnlp;
  • &jar;
  • &zip;

解説

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

解説

  • JOptionPane.showMessageDialog()メソッドなどで作成したダイアログ: Escキーを押すと閉じる
  • デフォルトのJDialog: Escキーを押しても閉じない
    • JDialogEscキーを押すと閉じるには、JDialogからInputMapを取得してActionを設定する必要がある

参考リンク

参考リンク

コメント

コメント