在我的程序中,我有一个Jbutton(名为 "Clear"),可以清除GUI中的几个文本字段。我想用Escape键代替这个按钮,这样按Escape键就和按这个按钮一样。(我不希望在我的程序中出现这个Jbutton)
基本上,你想从使用 键绑定.
现在,就我个人而言,我会给你的 "清除 "按钮附加一个绑定,这样使用起来就有两种选择......例如......
JButton clear = new JButton("Clear");
InputMap im = clear .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = clear .getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "clear");
am.put("clear", new ClearFieldsAction());
如果你想移除按钮,并监听孔应用程序的关键事件,你可以创建一个
并将此事件队列注册在
Toolkit.getDefaultToolkit().getSystemEventQueue().push(INSTANCE_EVENT_QUEUE)。
该方法
保护无效 dispatchEvent(AWTEvent e)
会得到你可以处理的AWTEvent.像。
@Override
protected void dispatchEvent(AWTEvent e) {
// handle event and/or
super.dispatchEvent(e);
}
你处理的关键事件就像
private void handleAWTEvent(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent keyEvent = (KeyEvent)event;
if (keyEvent.getID() != KeyEvent.KEY_PRESSED) {
return;
}
if (keyEvent.isAltDown() ^ keyEvent.isControlDown() && !keyEvent.isShiftDown()) {
...
试试这个,对我有用
InputMap im = clear.getRootPane().getInputMap(...
ActionMap am = clear.getRootPane().getActionMap(...