2015-11-26 48 views
-3

我使用此代碼來限制僅用於數字的輸入,但如果我按的第一個鍵是一個字母,則代碼讓我輸入該字母有一次,然後當我刪除它時,我不能輸入字母,代碼有什麼問題?我只想輸入數字。KeyListener-希望僅輸入數字,但它讓我輸入一個字母

amount.addKeyListener(new KeyAdapter() { 
    public void keyTyped(KeyEvent e) { 
     char c = e.getKeyChar(); 
     if (!(Character.isDigit(c))) 
       e.consume(); 
     } 

}); 

我加兩個結束括號,還是一樣的結果,這裏是一個 video

+1

或者具有JFormattedTextField或JSpinner的。 [Swing教程](http://docs.oracle.com/javase/tutorial/uiswing/components/componentlist.html)提供了有關這些組件的更多信息。 – camickr

+0

嗨,感謝你的評論,我知道還有其他的選擇可以做到這一點,但我想明白爲什麼會發生這種情況。 – Lazaro

+0

這裏完美無瑕。除了我不得不添加兩個右括號。除此之外,工作很好。你能確定這是錯誤的代碼嗎? – malinator

回答

0

試試這個:

try{ 
     Double.parseDouble(c); 

     //Code here for TRUE case (Is Number) 

}catch(NumberFormatException e1){ 

     //Code here for FALSE case (Is NOT Number) 
} 
相關問題