Excellent starting point! The code didn't quite work out of the box.
I needed to change "Action" to AbstractAction". And the VK_CONTROL
character actually needed to be a mask. I used
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() to get it in a
platform independent way.
I also added the Escape key as an alternate way of closing it. Here is
my code:
AbstractAction act = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
FindReplaceDialog.this.dispose();
}
};
getRootPane().getActionMap().put("close", act);
int stdMask =
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
InputMap im =
getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
;
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, stdMask), "close");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "close");
On Dec 8, 2004, at 2:04 PM, Illya Kysil wrote:
Bill Tschumy wrote:
I have a modal Find/Replace dialog that I would like to allow the
user to close via the keyboard (either Cmd-W, or possible ESCAPE).
Seems like in past versions of Java on OS X, hitting ESCAPE
automatically closed the dialog. This no longer seems to be the case
in 1.4.2.
I tried adding a single "Close" menu item to a menu attached to the
dialog, but when I do this the menubar appears at the top of the
dialog, not at the top of the screen like my main window's menubar
does.
So what's the current proper way of getting Cmd-W (or Escape) to
close a modal dialog?
You should put an action to root pane's ActionMap, something like
getRootPane().getActionMap().put("close",
new Action(){
public void actionPerformed(ActionEvent e){
dialog.dispose();
}
});
then put a key binding into InputMap:
InputMap im =
getRootPane().getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.VK_CONTROL),
"close");
--
Illya Kysil, software developer
Java/Delphi/C/C++/C#/Forth/Assembler
-----------------------------------------------------------------------
--
No trees were harmed in the generation of this e-mail.
A significant number of electrons were, however, severely
inconvenienced.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Java-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/java-dev/email@hidden