gpt4 book ai didi

java - DocumentFilter 只允许将数字和句点 (.) 放入 JTextField 中?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:45 28 4
gpt4 key购买 nike

\这里是 JTextField 的创建:

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

这是我的文档过滤器:

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”的命令。我花了一段时间才找到正确的信息。

此外,我现在拥有的代码还可以防止 .从成为我与 double 合作时需要的类型。有什么想法吗?

谢谢!我今天学到了很多东西,真是太神奇了。我已经连续编码 13 个小时了。

最佳答案

replaceAll 函数接受一个正则表达式。您可以从许多在线教程(请参阅@Hovercraft Full Of Eels 评论)或直接从 Java api 学习一些正则表达式:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

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

text.replaceAll("[^0-9.]", "")

关于java - DocumentFilter 只允许将数字和句点 (.) 放入 JTextField 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838689/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com