Mega Code Archive

 
Categories / Java Tutorial / Swing
 

JDialog is specify that pressing the Escape key cancels the dialog

import java.awt.Frame; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JRootPane; import javax.swing.KeyStroke; class EscapeDialog extends JDialog {   public EscapeDialog() {     super((Frame) null, false);   }   protected JRootPane createRootPane() {     JRootPane rootPane = new JRootPane();     KeyStroke stroke = KeyStroke.getKeyStroke("ESCAPE");     Action actionListener = new AbstractAction() {       public void actionPerformed(ActionEvent actionEvent) {         System.out.println("about to disappear");         setVisible(false);       }     };     InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);     inputMap.put(stroke, "ESCAPE");     rootPane.getActionMap().put("ESCAPE", actionListener);     return rootPane;   } } public class EscapeDialogTest {   public static void main(String[] a) {     EscapeDialog dlg = new EscapeDialog();     dlg.add(new JButton("asdf"));     dlg.setSize(300, 100);     dlg.setVisible(true);   } }