在我的程序中,我有一个Jbutton(名为“Clear”),用于清除GUI中的几个文本字段。我想用Escape键替换这个按钮,这样按下Escape键就像按下那个按钮一样。 (我不想在我的程序中使用Jbutton)
答案 0 :(得分:3)
基本上,您希望先使用key bindings。
现在,我个人而言,我会在你的“清除”按钮上附加一个绑定,所以使用有两个选择...例如......
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());
答案 1 :(得分:0)
如果要删除按钮并收听孔应用程序的关键事件,可以创建
并在
注册此EventQueueToolkit.getDefaultToolkit()getSystemEventQueue()推(INSTANCE_EVENT_QUEUE);
方法
protected void 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()) {
...
答案 2 :(得分:0)
尝试一下,它对我有用
InputMap im = clear.getRootPane().getInputMap(...
ActionMap am = clear.getRootPane().getActionMap(...