首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅允许数字和句点(.)的DocumentFilter进入JTextField吗?

仅允许数字和句点(.)的DocumentFilter进入JTextField吗?
EN

Stack Overflow用户
提问于 2012-08-07 11:06:24
回答 1查看 5.1K关注 0票数 4

\下面是JTextField的创建过程:

代码语言:javascript
复制
hourlyWageInput = new JTextField("7.25");
DocumentFilter filter = new UppercaseDocumentFilter();
((AbstractDocument) hourlyWageInput.getDocument()).setDocumentFilter(filter);
hourlyWageInput.setHorizontalAlignment(JTextField.CENTER);
add(hourlyWageInput);

这是我的DocumentFilter:

代码语言:javascript
复制
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class UppercaseDocumentFilter extends DocumentFilter {

 public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
      String text, javax.swing.text.AttributeSet attr)

      throws BadLocationException {
           fb.insertString(offset, text.replaceAll("\\D", ""), attr);   
 }
}

这会自动从JTextField中删除所有字母和字符。

然而,我想知道是否有人知道一个地方有类似"\D“的所有命令。我花了一段时间才找到正确的信息。

另外,我现在拥有的代码也阻止了。当我在处理替身时,我需要的类型。有什么想法吗?

谢谢!我今天学到了这么多东西,真令人惊讶。我已经连续编码13个小时了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-07 11:43:59

replaceAll函数接受一个正则表达式。您可以从许多在线教程(参见@Hovercraft Full Of Eels comment)或直接从Java api:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html了解到一些关于正则表达式的知识

从本质上讲,您可以将任何正则表达式构造(在上面的链接中列出)放在一起,形成一个正则表达式。例如,如果您想要确保只有0-9和。是允许的,您可以使用:

代码语言:javascript
复制
text.replaceAll("[^0-9.]", "")
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11838689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档