如何用java中的Escape键替换Jbutton?

时间:2013-09-12 06:35:23

标签: java replace jbutton

在我的程序中,我有一个Jbutton(名为“Clear”),用于清除GUI中的几个文本字段。我想用Escape键替换这个按钮,这样按下Escape键就像按下那个按钮一样。 (我不想在我的程序中使用Jbutton)

3 个答案:

答案 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)

如果要删除按钮并收听孔应用程序的关键事件,可以创建

EventQueue

并在

注册此EventQueue
  

Toolkit.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(...