请教高手 如何在JTextField中只允许输入数字 其他一概不允许
解决方案 »
- 帮我修改一下这个JAVA数字三角形
- SSH整合报错sessionFactory创建异常
- List中indexOf()对象问题???
- 遇到一个很郁闷的问题,两台电脑一台ServerSocket()可以加参数,另一台不能加参数,请高手进来看
- java程序里面一个小错误,那位高手来看一下是什么意思?
- 一个APPLET启动的问题..
- 高分求解简单问题,如何在JAVA中取得客户端的IE上设置的首选语言,要求能分清中文的简体和繁体
- 请高手相助,如何提高向远程sqlserver的插入速度
- 有关用java构建画图版的问题
- 怎么样设置环境变量(SET CLASSPATH)
- 小弟新学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);
这多好啊。