如何使文本字段只接受十进制数字
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
}
我觉得问题够基本了。我想让我的文本字段只接受十进制(双)数字。这是我目前的代码,它只允许整数。
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
}