2011-08-24 29 views
4

有一个简单的方法当按下键Esc键取消在一个JTextField用户输入?取消用户输入esc键的简单方法?

我的意思是不同的东西,一个关键的监听和数据备份。

由于

+1

建议您做的每件事都是从KeyListener中获得_different_;使用keybindings并添加一些逻辑,将字段中可能编辑的文本恢复到最后一次提交/加载时的文本 – kleopatra

+0

我没有Knox KeyBindings 。它看起来更高效,KeyListener的,而不是“说”不同 – user777466

+0

先来看看可能不会透露其所有的电源,它肯定_much_不同;-) – kleopatra

回答

1

Add一个KeyListener到您的JTextField:

JTextField field = new JTextField.addKeyListener(yourKeyListener); 

其中yourKeyListener可以是:

public class YourKeyListener implements KeyListener{ 
    void keyPressed(KeyEvent e){ 
     Component source = e.getSource(); 
     if (source instanceof JTextField && e.getId() == KeyEvent.VK_ESCAPE){ 

      JTextField f = (JTextField) source; 
      f.setText(""); 

     } 
    } 
} 
+1

-1的KeyListener - 你被警告;-) – kleopatra

+0

@kleopatra:你可以在解释至少为什么不应该使用keylistener? – Heisenbug

+0

这会提出一个很好的问题;但对我来说,可维护性是'KeyListener'的主要限制。 – trashgod

0

CancelAction,讨论herehere所示,是使用Action和示例一个key binding

+1

呀最高的抽象多,但这个动作就是重置成才为“”。我想在第一次编辑之前将其重置为该值。 – user777466

+0

您必须跟踪未经编辑的值,可能在应用程序的数据模型中。 – trashgod

+1

@ user777466 - 看起来像你要么不完全读出并没有完全理解我的评论,重复自己:“补充一点,在该领域的可能编辑的文本恢复到最后的文本一些逻辑提交/负载” – kleopatra

相关问题