当前位置: 首页 > 知识库问答 >
问题:

DocumentFilter只允许数字和句点(.)进入JTextField?

劳宇
2023-03-14

\这是JTextField的创建:

hourlyWageInput = new JTextField("7.25");
DocumentFilter filter = new UppercaseDocumentFilter();
((AbstractDocument) hourlyWageInput.getDocument()).setDocumentFilter(filter);
hourlyWageInput.setHorizontalAlignment(JTextField.CENTER);
add(hourlyWageInput);

这是我的DocumentFilter:

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个小时。

共有1个答案

湛宝
2023-03-14

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

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

text.replaceAll("[^0-9.]", "")
 类似资料:
  • 我正在开发一个Java应用程序,遇到了一个我自己似乎无法解决的问题。 我在上设置了,只允许数字输入,但是默认值是文本。我有一个按钮,可以将s重置为默认值,但由于的原因,它无法正常工作。 我怎样才能克服这个问题? 谢啦

  • 问题内容: 我是angularjs的新手。我想知道什么是只允许在文本框中键入有效数字的方法。例如,用户可以键入“ 1.25”,但不能键入“ 1.a”或“ 1 ..”。当用户尝试输入下一个将使它成为无效数字的字符时,他将无法输入。 提前致谢。 问题答案: 您可以尝试使用此指令来阻止将任何无效字符输入到输入字段中。( 更新 :这依赖于对模型具有明确知识的指令,这对于可重用性而言并不理想,请参见下面的可

  • 本文向大家介绍jQuery实现只允许输入数字和小数点的方法,包括了jQuery实现只允许输入数字和小数点的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现只允许输入数字和小数点的方法。分享给大家供大家参考,具体如下: 更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》

  • 问题内容: 在angularjs中,有任何可用的功能,仅允许将数字键入文本框中,例如 问题答案: 此功能正是您所需要的。http://docs.angularjs.org/api/ng.directive:input.number 编辑: 您可以将jquery插件包装到指令中。我在这里创建了一个示例:http : //jsfiddle.net/anazimok/jTJCF/ HTML: CSS:

  • 问题内容: 如何将输入限制为文本框,使其仅接受数字和小数点? 问题答案: 这确实有效!