Swing中JTextField输入 请教高手 如何在JTextField中只允许输入数字 其他一概不允许 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用setDocument(Document doc)参数可以扩展PlainDocument类,实现insertString方法,先对输入的String进行合法性检查,再调用super的insertString方法。 另外一种方法方法:使用文档过滤器/** * A filter that restricts input to digits and a '-' sign. */class IntFilter extends DocumentFilter { public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { StringBuilder builder = new StringBuilder(string); for (int i = builder.length() - 1; i >= 0; i--) { int cp = builder.codePointAt(i); if (!Character.isDigit(cp) && cp != '-') { builder.deleteCharAt(i); if (Character.isSupplementaryCodePoint(cp)) { i--; builder.deleteCharAt(i); } } } super.insertString(fb, offset, builder.toString(), attr); } public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException { if (string != null) { StringBuilder builder = new StringBuilder(string); for (int i = builder.length() - 1; i >= 0; i--) { int cp = builder.codePointAt(i); if (!Character.isDigit(cp) && cp != '-') { builder.deleteCharAt(i); if (Character.isSupplementaryCodePoint(cp)) { i--; builder.deleteCharAt(i); } } } string = builder.toString(); } super.replace(fb, offset, length, string, attr); }} 为什么不选择JFormattedTextField组件?示例:JFormattedTextField num = new JFormattedTextField();MaskFormatter mask = new MaskFormatter();mask.setValidCharacters("0123456789");mask.setPlaceholderCharacter('*');//掩码mask.install(num);这多好啊。 那就不要用JTextArea了嘛!JTextField JAVA核心编程上的一个例子…有关绘图方面的,困扰 JAVA编译问题 求助cannot resolve symbol JAVA里什么类实现了抽象类Graphics里的drawLine(),drawCircle()等方法?? 江湖告急!!!江湖告急!!! 网络版本自动更新 复制对象?? Java 报表和打印的问题 新手问题,哪里有JB7下载? 谁能给我讲讲事件是怎么回事 问题:JList1.addItem(rs.getString(1)),说addItem方法没找到?请大虾告诉我类似上面的 小弟新学JAVA遇一问题,也许这就是JAVA 各位高手,帮忙解决个问题好不
参数可以扩展PlainDocument类,实现insertString方法,
先对输入的String进行合法性检查,再调用super的insertString方法。
/**
* A filter that restricts input to digits and a '-' sign.
*/class IntFilter extends DocumentFilter {
public void insertString(FilterBypass fb, int offset, String string,
AttributeSet attr) throws BadLocationException {
StringBuilder builder = new StringBuilder(string);
for (int i = builder.length() - 1; i >= 0; i--) {
int cp = builder.codePointAt(i);
if (!Character.isDigit(cp) && cp != '-') {
builder.deleteCharAt(i);
if (Character.isSupplementaryCodePoint(cp)) {
i--;
builder.deleteCharAt(i);
}
}
}
super.insertString(fb, offset, builder.toString(), attr);
} public void replace(FilterBypass fb, int offset, int length, String string,
AttributeSet attr) throws BadLocationException {
if (string != null) {
StringBuilder builder = new StringBuilder(string);
for (int i = builder.length() - 1; i >= 0; i--) {
int cp = builder.codePointAt(i);
if (!Character.isDigit(cp) && cp != '-') {
builder.deleteCharAt(i);
if (Character.isSupplementaryCodePoint(cp)) {
i--;
builder.deleteCharAt(i);
}
}
}
string = builder.toString();
}
super.replace(fb, offset, length, string, attr);
}
}
示例:
JFormattedTextField num = new JFormattedTextField();
MaskFormatter mask = new MaskFormatter();
mask.setValidCharacters("0123456789");
mask.setPlaceholderCharacter('*');//掩码
mask.install(num);
这多好啊。