2011-08-24 55 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

相關問題