日期:2014-05-20 浏览次数:20698 次
package com.tur.demo;
import javax.swing.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class TextFieldDocumentDemo {
private static void createAndShowGui() {
final JTextField textField = new JTextField(20);
textField.setDocument(new FormatedDocument());
JFrame frame = new JFrame("Text Field Document Demo");
frame.getContentPane().add(textField);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGui();
}
}
class FormatedDocument extends PlainDocument {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
// 如果输入非数字,则输入无效
if (!str.matches("\\d+")) {
return;
}
// 取得输入的所有字符,输入有可能是插入,而不是每次都是输入在最后一个字符
int length = getLength();
StringBuilder sb = new StringBuilder(getText(0, length));
sb.insert(offs, str);
// 去掉字符中的所有空格
char[] chs = sb.toString().replaceAll("\\s+", "").toCharArray();
// 格式化新输入的字符串