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

How to make text field only accept decimal figures

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

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(); 

}

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

insertString 的 Javadocs:

Invoked prior to insertion of text into the specified Document. Subclasses that want to conditionally allow insertion should override this and only call supers implementation as necessary, or call directly into the FilterBypass.

尝试一下:

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