public void propertyChange(PropertyChangeEvent evt) { if (StandardDialogPane.PROPERTY_CANCEL_ACTION.equals(evt.getPropertyName())) { DelegateAction delegateAction = new DelegateAction(getDefaultCancelAction()) { private static final long serialVersionUID = -2136676357204671812L; @Override public boolean delegateActionPerformed(ActionEvent e) { if (hasSelectionPath()) { MenuSelectionManager.defaultManager().clearSelectedPath(); return true; } return false; } @Override public boolean isDelegateEnabled() { return hasSelectionPath(); } private boolean hasSelectionPath() { MenuElement[] selectedPath = MenuSelectionManager.defaultManager().getSelectedPath(); return selectedPath != null && selectedPath.length > 0; } }; getRootPane().unregisterKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)); getRootPane().registerKeyboardAction(delegateAction, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW); } else if (StandardDialogPane.PROPERTY_DEFAULT_ACTION.equals(evt.getPropertyName())) { getRootPane().unregisterKeyboardAction(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)); getRootPane().registerKeyboardAction(getDefaultAction(), KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); } } }