如何使文本字段只接受十进制数字

时间:2015-03-18 19:49:32

标签: java netbeans decimal textfield

我认为基本够问题。我想让我的文本字段只接受十进制(双)数字。这是我目前的代码,它只允许整数。

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {  

char c = evt.getKeyChar();

if((Character.isDigit(c)||c==KeyEvent.VK_BACK_SPACE||c==KeyEvent.VK_DELETE||c==KeyEvent.VK_DECIMAL)) {

    evt.consume(); 

}

2 个答案:

答案 0 :(得分:0)

文字字段有Document,应该是PlainDocument。获得支持PlainDocument并将DocumentFilter注入其中。您自己的过滤器应该展开DocumentFilter,覆盖insertString,只调用super.insertString来获取有效字符(在您的情况下为数字)。

insertString的Javadocs:

  

在将文本插入指定的Document之前调用。   想要有条件地允许插入的子类应该重写   这个并且只在必要时调用超级实现,或者调用   直接进入FilterBypass。

答案 1 :(得分:0)

尝试使用它:

try{
  Double.parseDouble(number);
}catch(NumberFormatException e){
  // Not a double
}