Dav*_*ell 3 java swing jtextfield replaceall documentfilter
\这是JTextField的创建:
hourlyWageInput = new JTextField("7.25");
DocumentFilter filter = new UppercaseDocumentFilter();
((AbstractDocument) hourlyWageInput.getDocument()).setDocumentFilter(filter);
hourlyWageInput.setHorizontalAlignment(JTextField.CENTER);
add(hourlyWageInput);
Run Code Online (Sandbox Code Playgroud)
这是我的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);
}
}
Run Code Online (Sandbox Code Playgroud)
这会自动删除JTextField中的所有字母和字符.
但是,我想知道是否有人知道所有命令类似于"\ D"的地方.我花了一段时间才找到正确的信息.
此外,我现在的代码也阻止了.当我正在与双打合作时,我需要的类型.有任何想法吗?
谢谢!令人惊讶的是,我今天学到了多少.我一直在编码13个小时.
该replaceAll函数采用正则表达式.您可以在线学习许多教程中的正则表达式(请参阅@Hovercraft Full Of Eels评论)或直接从Java API学习:http://docs.oracle.com/javase/6/docs/api/java/util/ 正则表达式/ Pattern.html
基本上,您可以将任何正则表达式构造(在上面的链接中列出)组合在一起以形成正则表达式.例如,如果你想确保只有0-9和.允许,你可以使用:
text.replaceAll("[^0-9.]", "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4638 次 |
| 最近记录: |