2012-03-02 65 views
2
 Jtxtfield.addKeyListener(new KeyListener() { 
     public void keyPressed(KeyEvent e) {}; 
     public void keyTyped(KeyEvent e) { 
      if(Jtxtfield.getText().equals("")) 
      System.out.println("hello1"); 
     }public void keyReleased(KeyEvent e) { 
      if(Jtxtfield.getText().equals("")) 
      System.out.println("hello2"); 
     } 
    }); 

第一個按鍵的輸出(比如'a')是:hello1。 如果我按下第二個鍵(再次說'a'),則沒有輸出(如預期的那樣)。 如果我按兩次刪除鍵,我會得到hello1 hello2。KeyTyped方法說TextField是空的...當它不是

這是怎麼發生的?爲什麼keyTyped方法將txtfield視爲沒有任何內容?更具體地說,當我按下文本字段中按下的第一個鍵時,爲什麼只有hello1?

回答

6

文本字段按順序觸發三個事件:按鍵事件,鍵類型事件和鍵釋放事件。鍵入事件沒有鍵碼信息;他們也沒有修飾符信息。如果你只關心用戶輸入的字符,你應該處理鍵入事件。如果您關心用戶按下/釋放哪些按鍵,則應該處理按鍵/釋放按鍵的事件。

如果你想在文本框的值使用的keyReleased(KeyEvent的E)爲

JTextField txt = (JTextField) e.getSource(); 
System.out.println(txt.getText()); 

一個例子,你可以找到here

您也可以使用DocumentListener

+1

不適用於JTextComponent僅限使用DocumentListener, – mKorbel 2012-03-02 07:35:00

+0

所以...這是如何回答我的問題? – user678392 2012-03-03 07:59:19

相關問題