Mega Code Archive

 
Categories / Java / Swing JFC
 

Dialog with Escape Key

import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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.JFrame; import javax.swing.JPanel; import javax.swing.JRootPane; import javax.swing.KeyStroke; public class FrameKey {   public static void main(String args[]) {     final JFrame frame = new JFrame("Frame Key");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     Action actionListener = new AbstractAction() {       public void actionPerformed(ActionEvent actionEvent) {         JDialog dialog = new EscapeDialog(frame, "Hey");         JButton button = new JButton("Okay");         ActionListener innerActionListener = new ActionListener() {           public void actionPerformed(ActionEvent actionEvent) {             System.out.println("Dialog Button Selected");           }         };         button.addActionListener(innerActionListener);         dialog.getContentPane().add(button, BorderLayout.SOUTH);         dialog.setSize(200, 200);         dialog.show();       }     };     JPanel content = (JPanel) frame.getContentPane();     KeyStroke stroke = KeyStroke.getKeyStroke("M");     InputMap inputMap = content         .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);     inputMap.put(stroke, "OPEN");     content.getActionMap().put("OPEN", actionListener);     frame.setSize(300, 300);     frame.setVisible(true);   } } class EscapeDialog extends JDialog {   public EscapeDialog() {     this((Frame) null, false);   }   public EscapeDialog(Frame owner) {     this(owner, false);   }   public EscapeDialog(Frame owner, boolean modal) {     this(owner, null, modal);   }   public EscapeDialog(Frame owner, String title) {     this(owner, title, false);   }   public EscapeDialog(Frame owner, String title, boolean modal) {     super(owner, title, modal);   }   public EscapeDialog(Dialog owner) {     this(owner, false);   }   public EscapeDialog(Dialog owner, boolean modal) {     this(owner, null, modal);   }   public EscapeDialog(Dialog owner, String title) {     this(owner, title, false);   }   public EscapeDialog(Dialog owner, String title, boolean modal) {     super(owner, title, modal);   }   protected JRootPane createRootPane() {     JRootPane rootPane = new JRootPane();     KeyStroke stroke = KeyStroke.getKeyStroke("ESCAPE");     Action actionListener = new AbstractAction() {       public void actionPerformed(ActionEvent actionEvent) {         setVisible(false);       }     };     InputMap inputMap = rootPane         .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);     inputMap.put(stroke, "ESCAPE");     rootPane.getActionMap().put("ESCAPE", actionListener);     return rootPane;   } }