【发布时间】:2012-08-04 00:55:22
【问题描述】:
\这里是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 个小时。
【问题讨论】:
-
Google 正则表达式教程。起点:Oracle Regular Expressions Tutorial。我最喜欢的:Regular Expressions Tutorial。从头开始,因为它非常激烈。
-
你那里有一些时髦的代码。一般你应该调用
FilterBypass中的匹配方法,你可能还想覆盖insertString。 -
@David Tunnell 非常感谢这个话题
标签: java swing jtextfield replaceall documentfilter