Java 限制在编辑文本中输入数字
我需要限制用户在EditText中输入数字(0-9),并允许键盘上每隔一个字符输入一个数字Java 限制在编辑文本中输入数字,java,android,Java,Android,我需要限制用户在EditText中输入数字(0-9),并允许键盘上每隔一个字符输入一个数字 以下代码不适用于以下场景 如果用户输入字母表,然后输入数字,编辑文本将变为空 InputFilter withoutNumberFilter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, i
以下代码不适用于以下场景 如果用户输入字母表,然后输入数字,编辑文本将变为空
InputFilter withoutNumberFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (Character.isDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
editText.setFilters(new InputFilter[] { withoutNumberFilter });
InputFilter withoutNumberFilter=newinputfilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
for(int i=start;i
只需使用正则表达式替换所有数字:
source = source.replaceAll("[0-9]","")
如果要在用户输入时执行此操作,则只需在每个操作事件后输入此语句。您可以使用
isleter()
方法进行比较
if (!Character.isLetter(source.charAt(i))) {
return "";
}
您只需将您的条件更新为:
if(!Character.isleter(source.charAt(i))
扩展类可能有助于实现侦听器。然后可以在其他形式中重用扩展的JTextField 这只是一个简单的例子
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextField;
public class MyJTextField extends JTextField implements KeyListener {
public MyJTextField() {
super();
addKeyListener(this);
}
boolean found = false;
@Override
public void keyPressed(KeyEvent arg0) {
char c = arg0.getKeyChar();
char[] cs = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
for (int i = 0; i < cs.length; i++) {
if (c == cs[i]) {
found = true;
break;
}
}
}
@Override
public void keyReleased(KeyEvent arg0) {
if (found) {
String text = getText();
setText(text.substring(0, text.length() - 1));
found = false;
}
}
@Override
public void keyTyped(KeyEvent arg0) {
// No action.
}
}
import java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
导入javax.swing.JTextField;
公共类MyJTextField扩展了JTextField,实现了KeyListener{
公共MyJTextField(){
超级();
addKeyListener(此);
}
布尔值=false;
@凌驾
按下公共无效键(KeyEvent arg0){
char c=arg0.getKeyChar();
char[]cs={'0','1','2','3','4','5','6','7','8','9'};
对于(int i=0;i
欢迎发表任何其他评论。“以下代码不起作用”它怎么不起作用?你到底希望它做什么,它又在做什么呢?它应该允许除0-9范围内的数字以外的所有其他字符。它应该允许字母、特殊字符、中文字符等。您不想这样做吗!Character.isleter()?