我认为基本够问题。我想让我的文本字段只接受十进制(双)数字。这是我目前的代码,它只允许整数。
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();
}
答案 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
}